ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/macros/examples/runPhysicsExample.C
Revision: 1.14
Committed: Wed Apr 20 13:00:21 2011 UTC (14 years ago) by ceballos
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_021pre1
Changes since 1.13: +66 -63 lines
Log Message:
new default analysis macro

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.13 2010/12/22 20:20:40 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-h160ww2l-gf-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_1_3_patch2/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_1_3_patch2/src/json/json_DCSONLY_ManualCert.txt"); // L = 23.2
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_Mu9");
128 hltmod->AddTrigger("!HLT_Mu9");
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,999999);
134 hltmod->AddTrigger("HLT_Mu8_Ele17_CaloIdL_v2",161179,999999);
135 }
136 else if(isData == true && isDataDMuon == true) {
137 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v1&!HLT_Mu17_Ele8_CaloIdL_v1&HLT_DoubleMu7_v1",150000,161176);
138 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v2&!HLT_Mu17_Ele8_CaloIdL_v2&HLT_DoubleMu7_v1",161179,999999);
139 }
140 else if(isData == true && isDataSMuon == true) {
141 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v1&!HLT_Mu17_Ele8_CaloIdL_v1&!HLT_DoubleMu7_v1&HLT_Mu15_v2",150000,161176);
142 hltmod->AddTrigger("!HLT_Mu8_Ele17_CaloIdL_v2&!HLT_Mu17_Ele8_CaloIdL_v2&!HLT_DoubleMu7_v1&HLT_Mu15_v2",161179,999999);
143 }
144 else if(isData == true && isDataDElectron == true) {
145 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);
146 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,999999);
147 }
148 else if(isData == true && isDataSElectron == true) {
149 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);
150 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,999999);
151 }
152 hltmod->SetTrigObjsName("myhltobjs");
153
154 //------------------------------------------------------------------------------------------------
155 // publisher Mod
156 //------------------------------------------------------------------------------------------------
157 PublisherMod<PFJet,Jet> *pubJet = new PublisherMod<PFJet,Jet>("JetPub");
158 pubJet->SetInputName("AKt5PFJets");
159 pubJet->SetOutputName("PubAKt5PFJets");
160
161 PublisherMod<PFMet,Met> *pubMet = new PublisherMod<PFMet,Met>("MetPub");
162 pubMet->SetInputName("PFMet");
163 pubMet->SetOutputName("PubPFMet");
164
165 //------------------------------------------------------------------------------------------------
166 // Apply Jet Corrections
167 //------------------------------------------------------------------------------------------------
168 JetCorrectionMod *jetCorr = new JetCorrectionMod;
169 jetCorr->AddCorrectionFromFile("/home/ceballos/releases/CMSSW_4_1_3_patch2/src/MitPhysics/data/START38_V13_AK5PF_L2Relative.txt");
170 jetCorr->AddCorrectionFromFile("/home/ceballos/releases/CMSSW_4_1_3_patch2/src/MitPhysics/data/START38_V13_AK5PF_L3Absolute.txt");
171 if(isData == true){
172 jetCorr->AddCorrectionFromFile("/home/ceballos/releases/CMSSW_4_1_3_patch2/src/MitPhysics/data/START38_V13_AK5PF_L2L3Residual.txt");
173 }
174 jetCorr->SetInputName(pubJet->GetOutputName());
175 jetCorr->ApplyL1FastJetCorrection(5.0);
176 jetCorr->SetCorrectedName("CorrectedJets");
177
178 //------------------------------------------------------------------------------------------------
179 // object id and cleaning sequence
180 //------------------------------------------------------------------------------------------------
181 MuonIDMod *muonID = new MuonIDMod;
182 muonID->SetClassType("Global");
183 muonID->SetIDType("WWMuId");
184 muonID->SetIsoType("TrackCaloSlidingNoCorrection");
185 muonID->SetApplyD0Cut(kTRUE);
186 muonID->SetApplyDZCut(kTRUE);
187 muonID->SetWhichVertex(0);
188
189 ElectronIDMod *electronID = new ElectronIDMod;
190 electronID->SetIDType("VBTFWorkingPointLowPtId");
191 electronID->SetIsoType("TrackJuraSlidingNoCorrection");
192 electronID->SetApplyConversionFilterType1(kTRUE);
193 electronID->SetApplyConversionFilterType2(kFALSE);
194 electronID->SetChargeFilter(kFALSE);
195 electronID->SetApplyD0Cut(kTRUE);
196 electronID->SetApplyDZCut(kTRUE);
197 electronID->SetWhichVertex(0);
198 electronID->SetNExpectedHitsInnerCut(0);
199
200 // Object ID and Cleaning Sequence
201 PhotonIDMod *photonID = new PhotonIDMod;
202 TauIDMod *tauID = new TauIDMod;
203 JetIDMod *jetID = new JetIDMod;
204 jetID->SetInputName(jetCorr->GetOutputName());
205 jetID->SetPtCut(30.0);
206 jetID->SetEtaMaxCut(5.0);
207 jetID->SetJetEEMFractionMinCut(0.0);
208 jetID->SetOutputName("GoodJets");
209 jetID->SetApplyBetaCut(kFALSE);
210
211 ElectronCleaningMod *electronCleaning = new ElectronCleaningMod;
212 PhotonCleaningMod *photonCleaning = new PhotonCleaningMod;
213 TauCleaningMod *tauCleaning = new TauCleaningMod;
214 JetCleaningMod *jetCleaning = new JetCleaningMod;
215 jetCleaning->SetGoodJetsName("GoodJets");
216 jetCleaning->SetCleanJetsName("CleanJets");
217
218 JetIDMod *jetIDNoPtCut = new JetIDMod;
219 jetIDNoPtCut->SetInputName(jetCorr->GetOutputName());
220 jetIDNoPtCut->SetPtCut(0.0);
221 jetIDNoPtCut->SetEtaMaxCut(5.0);
222 jetIDNoPtCut->SetJetEEMFractionMinCut(0.0);
223 jetIDNoPtCut->SetOutputName("GoodJetsNoPtCut");
224 jetIDNoPtCut->SetApplyBetaCut(kFALSE);
225
226 JetCleaningMod *jetCleaningNoPtCut = new JetCleaningMod;
227 jetCleaningNoPtCut->SetGoodJetsName("GoodJetsNoPtCut");
228 jetCleaningNoPtCut->SetCleanJetsName("CleanJetsNoPtCut");
229
230 //------------------------------------------------------------------------------------------------
231 // merge modules
232 //------------------------------------------------------------------------------------------------
233 MergeLeptonsMod *mergeLeptonsMod = new MergeLeptonsMod;
234 mergeLeptonsMod->SetMuonsName(muonID->GetOutputName());
235 mergeLeptonsMod->SetElectronsName(electronCleaning->GetOutputName());
236
237 //------------------------------------------------------------------------------------------------
238 // analyses modules
239 //------------------------------------------------------------------------------------------------
240 HwwExampleAnalysisMod *WWanalysisMod = new HwwExampleAnalysisMod;
241 WWanalysisMod->SetMetName(pubMet->GetOutputName());
242 WWanalysisMod->SetCleanJetsName(jetCleaning->GetOutputName());
243 WWanalysisMod->SetCleanJetsNoPtCutName(jetCleaningNoPtCut->GetOutputName());
244
245 WBFExampleAnalysisMod *WBFanalysisMod = new WBFExampleAnalysisMod;
246 WBFanalysisMod->SetMetName(pubMet->GetOutputName());
247 WBFanalysisMod->SetCleanJetsName(jetCleaning->GetOutputName());
248
249 //------------------------------------------------------------------------------------------------
250 // making analysis chain
251 //------------------------------------------------------------------------------------------------
252 generatorMod->Add(hKFactorProducer);
253 hKFactorProducer->Add(runLumiSelectionMod);
254 runLumiSelectionMod->Add(goodPVFilterMod);
255 goodPVFilterMod->Add(hltmod);
256 hltmod->Add(muonID);
257 muonID->Add(electronID);
258 electronID->Add(photonID);
259 photonID->Add(tauID);
260 tauID->Add(pubJet);
261 pubJet->Add(pubMet);
262 pubMet->Add(jetCorr);
263 jetCorr->Add(jetID);
264 jetID->Add(electronCleaning);
265 electronCleaning->Add(photonCleaning);
266 photonCleaning->Add(tauCleaning);
267 tauCleaning->Add(jetCleaning);
268 jetCleaning->Add(jetIDNoPtCut);
269 jetIDNoPtCut->Add(jetCleaningNoPtCut);
270 jetCleaningNoPtCut->Add(mergeLeptonsMod);
271 mergeLeptonsMod->Add(WWanalysisMod);
272 WWanalysisMod->Add(WBFanalysisMod);
273
274 //------------------------------------------------------------------------------------------------
275 // setup analysis
276 //------------------------------------------------------------------------------------------------
277 Analysis *ana = new Analysis;
278 ana->SetUseHLT(kTRUE);
279 ana->SetKeepHierarchy(kFALSE);
280 if (nEvents >= 0)
281 ana->SetProcessNEvents(nEvents);
282 ana->SetSuperModule(generatorMod);
283 ana->SetPrintScale(100);
284
285 //------------------------------------------------------------------------------------------------
286 // organize input
287 //------------------------------------------------------------------------------------------------
288 printf("\nRely on Catalog: %s\n",catalogDir);
289 printf(" -> Book: %s Dataset: %s Skim: %s Fileset: %s <-\n\n",book,dataset,skim,fileset);
290 Catalog *c = new Catalog(catalogDir);
291 TString skimdataset = TString(dataset)+TString("/") +TString(skim);
292 Dataset *d = NULL;
293 if (TString(skim).CompareTo("noskim") == 0)
294 d = c->FindDataset(book,dataset,fileset);
295 else
296 d = c->FindDataset(book,skimdataset.Data(),fileset);
297 ana->AddDataset(d);
298
299 //------------------------------------------------------------------------------------------------
300 // organize output
301 //------------------------------------------------------------------------------------------------
302 TString rootFile = TString(outputName);
303 rootFile += TString("_") + TString(dataset) + TString("_") + TString(skim);
304 if (TString(fileset) != TString(""))
305 rootFile += TString("_") + TString(fileset);
306 rootFile += TString(".root");
307 printf("\nRoot output: %s\n\n",rootFile.Data());
308 ana->SetOutputName(rootFile.Data());
309 ana->SetCacheSize(64*1024*1024);
310
311 //------------------------------------------------------------------------------------------------
312 // run the analysis after successful initialisation
313 //------------------------------------------------------------------------------------------------
314 ana->Run(!gROOT->IsBatch());
315
316 return;
317 }