ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitEwk/macros/runEwkExample.C
Revision: 1.26
Committed: Sun Jun 28 09:14:50 2009 UTC (15 years, 10 months ago) by loizides
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_010a
Changes since 1.25: +13 -8 lines
Log Message:
Ready for MitEwk_003

File Contents

# User Rev Content
1 loizides 1.26 // $Id: runEwkExample.C,v 1.25 2009/06/28 08:03:42 loizides Exp $
2 loizides 1.1
3     #if !defined(__CINT__) || defined(__MAKECINT__)
4     #include <TROOT.h>
5     #include <TSystem.h>
6     #include "MitAna/DataUtil/interface/Debug.h"
7     #include "MitAna/Utils/interface/SimpleTable.h"
8 loizides 1.18 #include "MitAna/DataTree/interface/TriggerObject.h"
9 loizides 1.1 #include "MitAna/TreeMod/interface/Analysis.h"
10     #include "MitAna/TreeMod/interface/HLTMod.h"
11 loizides 1.7 #include "MitAna/PhysicsMod/interface/FilterMod.h"
12 loizides 1.1 #include "MitAna/PhysicsMod/interface/PlotKineMod.h"
13     #include "MitAna/PhysicsMod/interface/PublisherMod.h"
14 loizides 1.24 #include "MitAna/PhysicsMod/interface/TrackToPartMod.h"
15 loizides 1.1 #include "MitPhysics/Init/interface/ModNames.h"
16     #include "MitPhysics/SelMods/interface/GenericSelMod.h"
17     #include "MitPhysics/Mods/interface/ElectronIDMod.h"
18     #include "MitPhysics/Mods/interface/ElectronCleaningMod.h"
19     #include "MitPhysics/Mods/interface/GeneratorMod.h"
20     #include "MitPhysics/Mods/interface/JetCleaningMod.h"
21     #include "MitPhysics/Mods/interface/JetIDMod.h"
22 loizides 1.18 #include "MitPhysics/Mods/interface/MatchMod.h"
23 loizides 1.1 #include "MitPhysics/Mods/interface/MuonIDMod.h"
24     #include "MitEwk/GenMods/interface/ZGenMod.h"
25 loizides 1.9 #include "MitEwk/GenMods/interface/ZmmAccMod.h"
26 loizides 1.1 #include "MitEwk/ZAnaMods/interface/ZmmCandAnaMod.h"
27 loizides 1.13 #include "MitEwk/ZAnaMods/interface/ZmmSelMod.h"
28 loizides 1.7 #include "MitEwk/ZAnaMods/interface/ZmmTagAndProbeMod.h"
29     #include "MitEwk/ZAnaMods/interface/ZxxTagAndProbeMod.h"
30 loizides 1.1 #endif
31    
32 loizides 1.15 using namespace mithep;
33    
34     //--------------------------------------------------------------------------------------------------
35     ZmmAccMod *CreateZmmAccMod(Double_t emin, Double_t emax, Double_t ptmin,
36     Double_t minz, Double_t maxz, const char *pref="ZmmAccMod")
37     {
38     ZmmAccMod *mod = new ZmmAccMod(Form("%s%.0fto%0.fGeV",pref,minz,maxz));
39     mod->SetMinMuEta(emin);
40     mod->SetMaxMuEta(emax);
41     mod->SetMinMuPt(ptmin);
42     mod->SetMinMass(minz);
43     mod->SetMaxMass(maxz);
44     return mod;
45     }
46    
47 loizides 1.1 //--------------------------------------------------------------------------------------------------
48 loizides 1.15
49    
50 loizides 1.1 void runEwkExample(Bool_t mcomp = 1,
51     const char *files = 0,
52     UInt_t nev = 0)
53     {
54     gDebugMask = Debug::kAnalysis;
55 loizides 1.21 gDebugLevel = 1;
56 loizides 1.1 gErrorIgnoreLevel = kInfo;
57    
58 loizides 1.10 const Double_t ptMin = 15;
59 loizides 1.19 const Double_t ptMax = 250;
60 loizides 1.10 const Double_t etaMin = -2;
61     const Double_t etaMax = +2;
62     const Double_t minCandM = 40;
63     const Double_t maxCandM = 200;
64 loizides 1.15 const Double_t minZM = 65;
65     const Double_t maxZM = 115;
66 loizides 1.26 const Double_t matchR = 0.1;
67     const Double_t matRTP = 0.3;
68 loizides 1.10
69 loizides 1.21 const char *hlttrig = "HLT_Mu15";
70 loizides 1.18 const char *muInput = Names::gkMuonBrn;
71 loizides 1.24 const char *trInput = "Tracks";
72     const char *saInput = "StandaloneMuonTracks";
73 loizides 1.3
74 loizides 1.1 // setup analysis object
75     Analysis *ana = new Analysis;
76 loizides 1.3 ana->SetUseHLT(1);
77 loizides 1.1 if (nev>0)
78     ana->SetProcessNEvents(nev);
79     TString ofname(gSystem->Getenv("MIT_OUTPUTFILE"));
80     if (ofname.IsNull())
81 loizides 1.2 ana->SetOutputName("ewk-hists.root");
82 loizides 1.1 else
83     ana->SetOutputName(ofname);
84 loizides 1.26 //ana->SetKeepHierarchy(0);
85 loizides 1.1 if (files)
86     ana->AddFile(files);
87    
88     // setup modules
89 loizides 1.18 HLTMod *hltmod = new HLTMod(hlttrig);
90 loizides 1.7 hltmod->SetPrintTable(kFALSE);
91 loizides 1.18 hltmod->AddTrigger(hlttrig);
92     hltmod->SetTrigObjsName(hlttrig);
93 loizides 1.7 ana->AddSuperModule(hltmod);
94 loizides 1.5
95 loizides 1.24 FilterMod<Track> *filTracks = new FilterMod<Track>("FilterTracks");
96     filTracks->SetInputName(trInput);
97     filTracks->SetOutputName("FilteredTracks");
98     filTracks->SetEtaMin(etaMin);
99     filTracks->SetEtaMax(etaMax);
100     filTracks->SetPtMin(ptMin);
101     filTracks->SetPtMax(ptMax);
102     filTracks->SetEntriesMax(15);
103     hltmod->Add(filTracks);
104    
105     TrackToPartMod *muTracks = new TrackToPartMod("MuTracks");
106     muTracks->SetInputName(filTracks->GetOutputName());
107     muTracks->SetOutputName("MuTracks");
108     muTracks->SetAbsPdgId(MCParticle::kMu);
109     filTracks->Add(muTracks);
110    
111     FilterMod<Track> *filSta = new FilterMod<Track>("FilterMuonTracks");
112     filSta->SetInputName(saInput);
113     filSta->SetOutputName("FilteredMuonTracks");
114     filSta->SetEtaMin(etaMin);
115     filSta->SetEtaMax(etaMax);
116     filSta->SetPtMin(ptMin);
117     filSta->SetPtMax(ptMax);
118     filSta->SetEntriesMax(15);
119     hltmod->Add(filSta);
120    
121     TrackToPartMod *staTracks = new TrackToPartMod("StaTracks");
122 loizides 1.25 staTracks->SetInputName(filSta->GetOutputName());
123 loizides 1.24 staTracks->SetOutputName("StaTracks");
124     staTracks->SetAbsPdgId(MCParticle::kMu);
125     filSta->Add(staTracks);
126    
127 loizides 1.12 FilterMod<Muon> *filMuons = new FilterMod<Muon>("FilterMuons");
128     filMuons->SetInputName(muInput);
129     filMuons->SetOutputName("FilteredMuons");
130     filMuons->SetEtaMin(etaMin);
131     filMuons->SetEtaMax(etaMax);
132     filMuons->SetPtMin(ptMin);
133 loizides 1.19 filMuons->SetPtMax(ptMax);
134 loizides 1.18 filMuons->SetEntriesMax(15);
135 loizides 1.12 hltmod->Add(filMuons);
136    
137     MuonIDMod *amuCl = new MuonIDMod("AllIsoMuons");
138     amuCl->SetInputName(filMuons->GetOutputName());
139     amuCl->AddEventObject(filMuons->GetOutputName(),kFALSE);
140     amuCl->SetOutputName("AllIsoMuons");
141     amuCl->SetPtMin(ptMin);
142     amuCl->SetClassType("All");
143     amuCl->SetIDType("Loose");
144     amuCl->SetIsoType("TrackCaloCombined");
145     amuCl->SetCombIsoCut(3);
146     amuCl->SetD0Cut(0.05);
147     filMuons->Add(amuCl);
148 loizides 1.10
149 loizides 1.8 MuonIDMod *gmuCl = new MuonIDMod("GlobalIsoMuons");
150 loizides 1.12 gmuCl->SetInputName(amuCl->GetOutputName());
151     gmuCl->AddEventObject(amuCl->GetOutputName(),kFALSE);
152 loizides 1.8 gmuCl->SetOutputName("GlobalIsoMuons");
153     gmuCl->SetPtMin(ptMin);
154     gmuCl->SetClassType("Global");
155     gmuCl->SetIDType("Loose");
156     gmuCl->SetIsoType("TrackCaloCombined");
157     gmuCl->SetCombIsoCut(3);
158     gmuCl->SetD0Cut(0.05);
159 loizides 1.14 amuCl->Add(gmuCl);
160 loizides 1.8
161     MuonIDMod *gmuClNonIso = new MuonIDMod("GlobalMuons");
162 loizides 1.12 gmuClNonIso->SetInputName(filMuons->GetOutputName());
163     gmuClNonIso->AddEventObject(filMuons->GetOutputName(),kFALSE);
164 loizides 1.8 gmuClNonIso->SetOutputName("GlobalMuons");
165     gmuClNonIso->SetPtMin(ptMin);
166     gmuClNonIso->SetClassType("Global");
167     gmuClNonIso->SetIDType("Loose");
168     gmuClNonIso->SetIsoType("NoIso");
169     gmuClNonIso->SetD0Cut(0.05);
170 loizides 1.12 filMuons->Add(gmuClNonIso);
171    
172 loizides 1.22 ZmmCandAnaMod *zmmCandMod = new ZmmCandAnaMod("ZmmCands");
173 loizides 1.14 zmmCandMod->SetMuonsName(amuCl->GetOutputName());
174 loizides 1.18 zmmCandMod->SetTrigsName(hltmod->GetOutputName());
175 loizides 1.14 zmmCandMod->SetMinMass(minCandM);
176     zmmCandMod->SetMaxMass(maxCandM);
177 loizides 1.20 zmmCandMod->SetMatchR(matchR);
178 loizides 1.22 zmmCandMod->SetZCandName("ZCand");
179     filMuons->Add(zmmCandMod);
180 loizides 1.12
181 loizides 1.18 ZmmTagAndProbeMod *zmmTPMod = new ZmmTagAndProbeMod("ZmmTP");
182     zmmTPMod->SetMuonsName(amuCl->GetOutputName());
183     zmmTPMod->SetTrigsName(hltmod->GetOutputName());
184     zmmTPMod->SetMinMatch(minCandM);
185     zmmTPMod->SetMaxMatch(maxCandM);
186 loizides 1.20 zmmTPMod->SetMatchR(matchR);
187 loizides 1.22 filMuons->Add(zmmTPMod);
188 loizides 1.18
189 loizides 1.19 MatchMod<Muon,TriggerObject> *matchMod = new MatchMod<Muon,TriggerObject>("MuHLTMatch");
190     matchMod->SetInputNameA(gmuCl->GetOutputName());
191     matchMod->SetInputNameB(hltmod->GetOutputName());
192     matchMod->SetOutputName("MatchedGmuHlt");
193 loizides 1.20 matchMod->SetMatchRadius(matchR);
194 loizides 1.19 matchMod->SetAddPairs(0);
195 loizides 1.22 filMuons->Add(matchMod);
196 loizides 1.19
197 loizides 1.18 ZxxTagAndProbeMod *zIsoTPMod = new ZxxTagAndProbeMod("ZIsoTP");
198 loizides 1.19 zIsoTPMod->SetTagName(matchMod->GetOutputName());
199 loizides 1.18 zIsoTPMod->SetProbeName(gmuClNonIso->GetOutputName());
200     zIsoTPMod->SetTestName(gmuCl->GetOutputName());
201     zIsoTPMod->SetMinMatch(minCandM);
202     zIsoTPMod->SetMaxMatch(maxCandM);
203 loizides 1.26 zIsoTPMod->SetMatchR(matRTP);
204     zIsoTPMod->SetMaxRelPtDiff(-1);
205 loizides 1.19 matchMod->Add(zIsoTPMod);
206 loizides 1.18
207     ZxxTagAndProbeMod *zHltTPMod = new ZxxTagAndProbeMod("MuHltTP");
208     zHltTPMod->SetTagName(matchMod->GetOutputName());
209     zHltTPMod->SetProbeName(gmuCl->GetOutputName());
210     zHltTPMod->SetTestName(hltmod->GetOutputName());
211     zHltTPMod->SetMinMatch(minCandM);
212     zHltTPMod->SetMaxMatch(maxCandM);
213 loizides 1.26 zHltTPMod->SetMatchR(matRTP);
214     zHltTPMod->SetMaxRelPtDiff(-1);
215 loizides 1.18 matchMod->Add(zHltTPMod);
216 loizides 1.17
217 loizides 1.24 ZxxTagAndProbeMod *zGMTPMod = new ZxxTagAndProbeMod("ZGMTP");
218     zGMTPMod->SetTagName(matchMod->GetOutputName());
219     zGMTPMod->SetProbeName(muTracks->GetOutputName());
220 loizides 1.25 zGMTPMod->SetTestName(gmuClNonIso->GetOutputName());
221 loizides 1.24 zGMTPMod->SetMinMatch(minCandM);
222     zGMTPMod->SetMaxMatch(maxCandM);
223 loizides 1.26 zGMTPMod->SetMatchR(matRTP);
224     zGMTPMod->SetMaxRelPtDiff(-1);
225 loizides 1.24 matchMod->Add(zGMTPMod);
226    
227 loizides 1.26 ZxxTagAndProbeMod *zTracksTPMod = new ZxxTagAndProbeMod("ZTracksTP");
228 loizides 1.24 zTracksTPMod->SetTagName(matchMod->GetOutputName());
229     zTracksTPMod->SetProbeName(staTracks->GetOutputName());
230     zTracksTPMod->SetTestName(muTracks->GetOutputName());
231     zTracksTPMod->SetMinMatch(minCandM);
232     zTracksTPMod->SetMaxMatch(maxCandM);
233 loizides 1.26 zTracksTPMod->SetMatchR(matRTP);
234     zTracksTPMod->SetMaxRelPtDiff(-1);
235 loizides 1.24 matchMod->Add(zTracksTPMod);
236    
237 loizides 1.13 if (mcomp) {
238 loizides 1.23 GeneratorMod *genMod = new GeneratorMod;
239     genMod->SetFillHist(1);
240     genMod->SetPdgIdCut(23);
241     ana->AddSuperModule(genMod);
242    
243     ZGenMod *zgMod = new ZGenMod;
244     zgMod->SetMinMuEta(etaMin);
245     zgMod->SetMaxMuEta(etaMax);
246     zgMod->SetMinMuPt(ptMin);
247     zgMod->SetMinMass(minCandM);
248     zgMod->SetMaxMass(maxCandM);
249     genMod->Add(zgMod);
250    
251 loizides 1.15 ZmmAccMod *zm1 = CreateZmmAccMod(etaMin,etaMax,ptMin,minCandM,maxCandM);
252     zm1->SetRecoName(zmmCandMod->GetZCandName());
253 loizides 1.22 zm1->SetFillNtup(1);
254 loizides 1.23 genMod->Add(zm1);
255 loizides 1.15 ZmmAccMod *zm2 = CreateZmmAccMod(etaMin,etaMax,ptMin,minZM,maxZM);
256 loizides 1.22 zm2->SetRecoName(zmmCandMod->GetZCandName());
257 loizides 1.23 genMod->Add(zm2);
258 loizides 1.13 }
259    
260 loizides 1.12 // run the analysis after successful initialisation
261     ana->Run(!gROOT->IsBatch());
262     }