ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/macros/examples/runPhysicsExample.C
Revision: 1.17
Committed: Mon Jun 13 20:36:39 2011 UTC (13 years, 10 months ago) by ceballos
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_029c, Mit_029b, Mit_029a, Mit_028a, Mit_028, Mit_027, Mit_027a, Mit_025e, Mit_025d, Mit_025c, Mit_025b, Mit_025a, Mit_025, Mit_025pre2, Mit_024b, Mit_025pre1, Mit_024a, Mit_024, Mit_023, Mit_022a, Mit_022, HEAD
Changes since 1.16: +12 -12 lines
Log Message:
update for the new selection

File Contents

# Content
1 //root -l -q -b $CMSSW_BASE/src/MitHiggs/macros/runMacros/runHwwExampleAnalysis.C+\(\"0000\",\"noskim\",\"s8-h190ww2l-gf-mc3\",\"mit/filler/011\",\"/home/mitprod/catalog\",\"HwwExampleAnalysis\",1000,1\)
2
3 // $Id: runPhysicsExample.C,v 1.16 2011/04/29 16:18:16 ceballos Exp $
4
5 #if !defined(__CINT__) || defined(__MAKECINT__)
6 #include <TROOT.h>
7 #include <exception>
8 #include "MitAna/DataUtil/interface/Debug.h"
9 #include "MitAna/Catalog/interface/Catalog.h"
10 #include "MitAna/TreeMod/interface/Analysis.h"
11 #include "MitAna/TreeMod/interface/HLTMod.h"
12 #include "MitAna/PhysicsMod/interface/PublisherMod.h"
13 #include "MitAna/PhysicsMod/interface/RunLumiSelectionMod.h"
14 #include "MitPhysics/Init/interface/ModNames.h"
15 #include "MitPhysics/Mods/interface/GoodPVFilterMod.h"
16 #include "MitPhysics/Mods/interface/GeneratorMod.h"
17 #include "MitPhysics/Mods/interface/HKFactorProducer.h"
18 #include "MitPhysics/Mods/interface/JetCorrectionMod.h"
19 #include "MitPhysics/Mods/interface/CaloMetCorrectionMod.h"
20 #include "MitPhysics/Mods/interface/MuonIDMod.h"
21 #include "MitPhysics/Mods/interface/ElectronIDMod.h"
22 #include "MitPhysics/Mods/interface/PhotonIDMod.h"
23 #include "MitPhysics/Mods/interface/TauIDMod.h"
24 #include "MitPhysics/Mods/interface/JetIDMod.h"
25 #include "MitPhysics/Mods/interface/ElectronCleaningMod.h"
26 #include "MitPhysics/Mods/interface/PhotonCleaningMod.h"
27 #include "MitPhysics/Mods/interface/TauCleaningMod.h"
28 #include "MitPhysics/Mods/interface/JetCleaningMod.h"
29 #include "MitPhysics/Mods/interface/MergeLeptonsMod.h"
30 #include "MitAna/DataTree/interface/JetCol.h"
31 #include "MitAna/DataTree/interface/PFJetCol.h"
32 #include "MitAna/DataTree/interface/MetCol.h"
33 #include "MitAna/DataTree/interface/PFMetCol.h"
34 #include "MitAna/DataTree/interface/CaloMetCol.h"
35 #include "MitPhysics/SelMods/interface/HwwExampleAnalysisMod.h"
36 #include "MitPhysics/SelMods/interface/WBFExampleAnalysisMod.h"
37 #endif
38
39 //--------------------------------------------------------------------------------------------------
40 void runPhysicsExample(const char *catalogDir = "/home/mitprod/catalog",
41 const char *book = "cern/filefi/020",
42 const char *dataset = "p11-ww2l-v1g1-pu",
43 const char *fileset = "0000",
44 const char *skim = "noskim",
45 const char *outputName = "histo",
46 int sampleID = -1,
47 int nEvents = 10000)
48 {
49 //------------------------------------------------------------------------------------------------
50 // some global setups
51 //------------------------------------------------------------------------------------------------
52 using namespace mithep;
53 gDebugMask = Debug::kAnalysis;
54 gDebugLevel = 3;
55
56 //------------------------------------------------------------------------------------------------
57 // set up information
58 //------------------------------------------------------------------------------------------------
59 Bool_t applyISRFilter = kFALSE;
60 Bool_t applyMllGenCut = kFALSE;
61 Bool_t isData = kFALSE;
62 Bool_t isDataMuonElectron = kFALSE;
63 Bool_t isDataDMuon = kFALSE;
64 Bool_t isDataSMuon = kFALSE;
65 Bool_t isDataDElectron = kFALSE;
66 Bool_t isDataSElectron = kFALSE;
67 int processId = -999999999; // use 999 for MCatNLO MC sample, 102 for H->WW
68 TString fInputFilenameKF = "/home/ceballos/releases/CMSSW_4_2_2/src/MitPhysics/data/HWW_KFactors_160_10TeV.dat";
69
70 if(sampleID >= 1000) isData = kTRUE;
71
72 if(sampleID >= 1000) isDataMuonElectron = kTRUE;
73 if(sampleID >= 2000) isDataDMuon = kTRUE;
74 if(sampleID >= 3000) isDataSMuon = kTRUE;
75 if(sampleID >= 4000) isDataDElectron = kTRUE;
76 if(sampleID >= 5000) isDataSElectron = kTRUE;
77
78 //------------------------------------------------------------------------------------------------
79 // generator information
80 //------------------------------------------------------------------------------------------------
81 GeneratorMod *generatorMod = new GeneratorMod;
82 generatorMod->SetPrintDebug(kFALSE);
83 generatorMod->SetPtLeptonMin(0.0);
84 generatorMod->SetEtaLeptonMax(2.7);
85 generatorMod->SetPtPhotonMin(15.0);
86 generatorMod->SetEtaPhotonMax(2.7);
87 generatorMod->SetPtRadPhotonMin(10.0);
88 generatorMod->SetEtaRadPhotonMax(2.7);
89 generatorMod->SetIsData(isData);
90 generatorMod->SetFillHist(!isData);
91 if(applyMllGenCut == kTRUE){
92 generatorMod->SetPdgIdCut(23);
93 generatorMod->SetMassMinCut( 0.);
94 generatorMod->SetMassMaxCut(50.);
95 }
96 generatorMod->SetApplyISRFilter(applyISRFilter);
97
98 HKFactorProducer *hKFactorProducer = new HKFactorProducer;
99 hKFactorProducer->SetProcessID(processId);
100 hKFactorProducer->SetInputFilename(fInputFilenameKF);
101 hKFactorProducer->SetIsData(isData);
102 hKFactorProducer->SetFillHist(!isData);
103
104 //------------------------------------------------------------------------------------------------
105 // Run RunLumiSelectionMod
106 //------------------------------------------------------------------------------------------------
107 RunLumiSelectionMod *runLumiSelectionMod = new RunLumiSelectionMod;
108 runLumiSelectionMod->SetAcceptMC(!isData);
109 runLumiSelectionMod->AddJSONFile("/home/ceballos/releases/CMSSW_4_2_2/src/json/Cert_160404-166502_7TeV_PromptReco_Collisions11_JSON.txt");
110
111 //------------------------------------------------------------------------------------------------
112 // PV filter selection
113 //------------------------------------------------------------------------------------------------
114 GoodPVFilterMod *goodPVFilterMod = new GoodPVFilterMod;
115 goodPVFilterMod->SetMinVertexNTracks(0);
116 goodPVFilterMod->SetMinNDof(4);
117 goodPVFilterMod->SetMaxAbsZ(24.0);
118 goodPVFilterMod->SetMaxRho(2.0);
119 goodPVFilterMod->SetVertexesName("DAPrimaryVertexes");
120
121 //------------------------------------------------------------------------------------------------
122 // HLT information
123 //------------------------------------------------------------------------------------------------
124 HLTMod *hltmod = new HLTMod;
125
126 if (isData == kFALSE){
127 hltmod->AddTrigger("HLT_Mu15_v1");
128 hltmod->AddTrigger("!HLT_Mu15_v1");
129 }
130 else if(isData == true && isDataMuonElectron == true) {
131 hltmod->AddTrigger("HLT_Mu17_Ele8_CaloIdL_v1",150000,161176);
132 hltmod->AddTrigger("HLT_Mu8_Ele17_CaloIdL_v1",150000,161176);
133 hltmod->AddTrigger("HLT_Mu17_Ele8_CaloIdL_v2",161179,163261);
134 hltmod->AddTrigger("HLT_Mu8_Ele17_CaloIdL_v2",161179,163261);
135 hltmod->AddTrigger("HLT_Mu17_Ele8_CaloIdL_v3",163262,999999);
136 hltmod->AddTrigger("HLT_Mu8_Ele17_CaloIdL_v3",163262,999999);
137 }
138 else if(isData == true && isDataDMuon == true) {
139 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v1&!HLT_Mu17_Ele8_CaloIdL_v1&HLT_DoubleMu7_v1",150000,161176);
140 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v2&!HLT_Mu17_Ele8_CaloIdL_v2&HLT_DoubleMu7_v1",161179,163261);
141 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v3&!HLT_Mu17_Ele8_CaloIdL_v3&HLT_DoubleMu7_v2",163262,999999);
142 }
143 else if(isData == true && isDataSMuon == true) {
144 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v1&!HLT_Mu17_Ele8_CaloIdL_v1&!HLT_DoubleMu7_v1&HLT_Mu15_v2",150000,161176);
145 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v2&!HLT_Mu17_Ele8_CaloIdL_v2&!HLT_DoubleMu7_v1&HLT_Mu15_v2",161179,163261);
146 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v3&!HLT_Mu17_Ele8_CaloIdL_v3&!HLT_DoubleMu7_v2&HLT_Mu24_v2",163262,999999);
147 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v3&!HLT_Mu17_Ele8_CaloIdL_v3&!HLT_DoubleMu7_v2&HLT_IsoMu17_v6",163262,999999);
148 }
149 else if(isData == true && isDataDElectron == true) {
150 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v1&!HLT_Mu17_Ele8_CaloIdL_v1&!HLT_DoubleMu7_v1&!HLT_Mu15_v2&HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v1",150000,161176);
151 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v2&!HLT_Mu17_Ele8_CaloIdL_v2&!HLT_DoubleMu7_v1&!HLT_Mu15_v2&HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v2",161179,163261);
152 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v3&!HLT_Mu17_Ele8_CaloIdL_v3&!HLT_DoubleMu7_v2&!HLT_Mu24_v2&!HLT_IsoMu17_v6&HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v3",163262,999999);
153 }
154 else if(isData == true && isDataSElectron == true) {
155 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v1&!HLT_Mu17_Ele8_CaloIdL_v1&!HLT_DoubleMu7_v1&!HLT_Mu15_v2&!HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v1&HLT_Ele27_CaloIdVT_CaloIsoT_TrkIdT_TrkIsoT_v1",150000,161176);
156 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v2&!HLT_Mu17_Ele8_CaloIdL_v2&!HLT_DoubleMu7_v1&!HLT_Mu15_v2&!HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v2&HLT_Ele27_CaloIdVT_CaloIsoT_TrkIdT_TrkIsoT_v2",161179,163261);
157 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v3&!HLT_Mu17_Ele8_CaloIdL_v3&!HLT_DoubleMu7_v2&!HLT_Mu24_v2&!HLT_IsoMu17_v6&!HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v3&HLT_Ele27_CaloIdVT_CaloIsoT_TrkIdT_TrkIsoT_v3",163262,999999);
158 }
159 hltmod->SetTrigObjsName("myhltobjs");
160
161 //------------------------------------------------------------------------------------------------
162 // publisher Mod
163 //------------------------------------------------------------------------------------------------
164 PublisherMod<PFJet,Jet> *pubJet = new PublisherMod<PFJet,Jet>("JetPub");
165 pubJet->SetInputName("AKt5PFJets");
166 pubJet->SetOutputName("PubAKt5PFJets");
167
168 PublisherMod<PFMet,Met> *pubMet = new PublisherMod<PFMet,Met>("MetPub");
169 pubMet->SetInputName("PFMet");
170 pubMet->SetOutputName("PubPFMet");
171
172 //------------------------------------------------------------------------------------------------
173 // Apply Jet Corrections
174 //------------------------------------------------------------------------------------------------
175 JetCorrectionMod *jetCorr = new JetCorrectionMod;
176 jetCorr->AddCorrectionFromFile("/home/ceballos/releases/CMSSW_4_2_2/src/MitPhysics/data/START41_V0_AK5PF_L1FastJet.txt");
177 jetCorr->AddCorrectionFromFile("/home/ceballos/releases/CMSSW_4_2_2/src/MitPhysics/data/START41_V0_AK5PF_L2Relative.txt");
178 jetCorr->AddCorrectionFromFile("/home/ceballos/releases/CMSSW_4_2_2/src/MitPhysics/data/START41_V0_AK5PF_L3Absolute.txt");
179 if(isData == true){
180 jetCorr->AddCorrectionFromFile("/home/ceballos/releases/CMSSW_4_2_2/src/MitPhysics/data/START41_V0_AK5PF_L2L3Residual.txt");
181 }
182 jetCorr->SetInputName(pubJet1->GetOutputName());
183 jetCorr->SetCorrectedName("CorrectedJets");
184
185 //------------------------------------------------------------------------------------------------
186 // object id and cleaning sequence
187 //------------------------------------------------------------------------------------------------
188 MuonIDMod *muonID = new MuonIDMod;
189 muonID->SetClassType("GlobalTracker");
190 muonID->SetIDType("WWMuIdV2");
191 muonID->SetIsoType("PFIso");
192 muonID->SetApplyD0Cut(kTRUE);
193 muonID->SetApplyDZCut(kTRUE);
194 muonID->SetWhichVertex(0);
195
196 ElectronIDMod *electronID = new ElectronIDMod;
197 electronID->SetIDType("VBTFWorkingPointLowPtId");
198 electronID->SetIsoType("PFIso");
199 electronID->SetApplyConversionFilterType1(kTRUE);
200 electronID->SetApplyConversionFilterType2(kFALSE);
201 electronID->SetChargeFilter(kFALSE);
202 electronID->SetApplyD0Cut(kTRUE);
203 electronID->SetApplyDZCut(kTRUE);
204 electronID->SetWhichVertex(0);
205 electronID->SetNExpectedHitsInnerCut(0);
206
207 // Object ID and Cleaning Sequence
208 PhotonIDMod *photonID = new PhotonIDMod;
209 TauIDMod *tauID = new TauIDMod;
210 JetIDMod *jetID = new JetIDMod;
211 jetID->SetInputName(jetCorr->GetOutputName());
212 jetID->SetPtCut(30.0);
213 jetID->SetEtaMaxCut(5.0);
214 jetID->SetJetEEMFractionMinCut(0.0);
215 jetID->SetOutputName("GoodJets");
216 jetID->SetApplyBetaCut(kFALSE);
217
218 ElectronCleaningMod *electronCleaning = new ElectronCleaningMod;
219 PhotonCleaningMod *photonCleaning = new PhotonCleaningMod;
220 TauCleaningMod *tauCleaning = new TauCleaningMod;
221 JetCleaningMod *jetCleaning = new JetCleaningMod;
222 jetCleaning->SetGoodJetsName("GoodJets");
223 jetCleaning->SetCleanJetsName("CleanJets");
224
225 JetIDMod *jetIDNoPtCut = new JetIDMod;
226 jetIDNoPtCut->SetInputName(jetCorr->GetOutputName());
227 jetIDNoPtCut->SetPtCut(0.0);
228 jetIDNoPtCut->SetEtaMaxCut(5.0);
229 jetIDNoPtCut->SetJetEEMFractionMinCut(0.0);
230 jetIDNoPtCut->SetOutputName("GoodJetsNoPtCut");
231 jetIDNoPtCut->SetApplyBetaCut(kFALSE);
232
233 JetCleaningMod *jetCleaningNoPtCut = new JetCleaningMod;
234 jetCleaningNoPtCut->SetGoodJetsName("GoodJetsNoPtCut");
235 jetCleaningNoPtCut->SetCleanJetsName("CleanJetsNoPtCut");
236
237 //------------------------------------------------------------------------------------------------
238 // merge modules
239 //------------------------------------------------------------------------------------------------
240 MergeLeptonsMod *mergeLeptonsMod = new MergeLeptonsMod;
241 mergeLeptonsMod->SetMuonsName(muonID->GetOutputName());
242 mergeLeptonsMod->SetElectronsName(electronCleaning->GetOutputName());
243
244 //------------------------------------------------------------------------------------------------
245 // analyses modules
246 //------------------------------------------------------------------------------------------------
247 HwwExampleAnalysisMod *WWanalysisMod = new HwwExampleAnalysisMod;
248 WWanalysisMod->SetMetName(pubMet->GetOutputName());
249 WWanalysisMod->SetCleanJetsName(jetCleaning->GetOutputName());
250 WWanalysisMod->SetCleanJetsNoPtCutName(jetCleaningNoPtCut->GetOutputName());
251
252 WBFExampleAnalysisMod *WBFanalysisMod = new WBFExampleAnalysisMod;
253 WBFanalysisMod->SetMetName(pubMet->GetOutputName());
254 WBFanalysisMod->SetCleanJetsName(jetCleaning->GetOutputName());
255
256 //------------------------------------------------------------------------------------------------
257 // making analysis chain
258 //------------------------------------------------------------------------------------------------
259 generatorMod->Add(hKFactorProducer);
260 hKFactorProducer->Add(runLumiSelectionMod);
261 runLumiSelectionMod->Add(goodPVFilterMod);
262 goodPVFilterMod->Add(hltmod);
263 hltmod->Add(muonID);
264 muonID->Add(electronID);
265 electronID->Add(photonID);
266 photonID->Add(tauID);
267 tauID->Add(pubJet);
268 pubJet->Add(pubMet);
269 pubMet->Add(jetCorr);
270 jetCorr->Add(jetID);
271 jetID->Add(electronCleaning);
272 electronCleaning->Add(photonCleaning);
273 photonCleaning->Add(tauCleaning);
274 tauCleaning->Add(jetCleaning);
275 jetCleaning->Add(jetIDNoPtCut);
276 jetIDNoPtCut->Add(jetCleaningNoPtCut);
277 jetCleaningNoPtCut->Add(mergeLeptonsMod);
278 mergeLeptonsMod->Add(WWanalysisMod);
279 WWanalysisMod->Add(WBFanalysisMod);
280
281 //------------------------------------------------------------------------------------------------
282 // setup analysis
283 //------------------------------------------------------------------------------------------------
284 Analysis *ana = new Analysis;
285 ana->SetUseHLT(kTRUE);
286 ana->SetKeepHierarchy(kFALSE);
287 if (nEvents >= 0)
288 ana->SetProcessNEvents(nEvents);
289 ana->SetSuperModule(generatorMod);
290 ana->SetPrintScale(100);
291
292 //------------------------------------------------------------------------------------------------
293 // organize input
294 //------------------------------------------------------------------------------------------------
295 printf("\nRely on Catalog: %s\n",catalogDir);
296 printf(" -> Book: %s Dataset: %s Skim: %s Fileset: %s <-\n\n",book,dataset,skim,fileset);
297 Catalog *c = new Catalog(catalogDir);
298 TString skimdataset = TString(dataset)+TString("/") +TString(skim);
299 Dataset *d = NULL;
300 if (TString(skim).CompareTo("noskim") == 0)
301 d = c->FindDataset(book,dataset,fileset);
302 else
303 d = c->FindDataset(book,skimdataset.Data(),fileset);
304 ana->AddDataset(d);
305
306 //------------------------------------------------------------------------------------------------
307 // organize output
308 //------------------------------------------------------------------------------------------------
309 TString rootFile = TString(outputName);
310 rootFile += TString("_") + TString(dataset) + TString("_") + TString(skim);
311 if (TString(fileset) != TString(""))
312 rootFile += TString("_") + TString(fileset);
313 rootFile += TString(".root");
314 printf("\nRoot output: %s\n\n",rootFile.Data());
315 ana->SetOutputName(rootFile.Data());
316 ana->SetCacheSize(64*1024*1024);
317
318 //------------------------------------------------------------------------------------------------
319 // run the analysis after successful initialisation
320 //------------------------------------------------------------------------------------------------
321 ana->Run(!gROOT->IsBatch());
322
323 return;
324 }