ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/macros/examples/runPhysicsExample.C
Revision: 1.2
Committed: Mon Mar 15 14:20:56 2010 UTC (15 years, 1 month ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_013d, Mit_013c, Mit_013b, Mit_013a, Mit_013, Mit_013pre1
Changes since 1.1: +3 -3 lines
Log Message:
revert to catalog use

File Contents

# User Rev Content
1 bendavid 1.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 bendavid 1.2 // $Id: runPhysicsExample.C,v 1.1 2010/03/12 13:52:01 bendavid Exp $
4 bendavid 1.1
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 "MitPhysics/Init/interface/ModNames.h"
14     #include "MitPhysics/Mods/interface/GeneratorMod.h"
15     #include "MitPhysics/Mods/interface/PDFProducerMod.h"
16     #include "MitPhysics/Mods/interface/HKFactorProducer.h"
17     #include "MitPhysics/Mods/interface/JetCorrectionMod.h"
18     #include "MitPhysics/Mods/interface/CaloMetCorrectionMod.h"
19     #include "MitPhysics/Mods/interface/MuonIDMod.h"
20     #include "MitPhysics/Mods/interface/ElectronIDMod.h"
21     #include "MitPhysics/Mods/interface/PhotonIDMod.h"
22     #include "MitPhysics/Mods/interface/TauIDMod.h"
23     #include "MitPhysics/Mods/interface/JetIDMod.h"
24     #include "MitPhysics/Mods/interface/ElectronCleaningMod.h"
25     #include "MitPhysics/Mods/interface/PhotonCleaningMod.h"
26     #include "MitPhysics/Mods/interface/TauCleaningMod.h"
27     #include "MitPhysics/Mods/interface/JetCleaningMod.h"
28     #include "MitPhysics/Mods/interface/MergeLeptonsMod.h"
29     #include "MitAna/DataTree/interface/JetCol.h"
30     #include "MitAna/DataTree/interface/CaloJetCol.h"
31     #include "MitAna/DataTree/interface/MetCol.h"
32     #include "MitAna/DataTree/interface/CaloMetCol.h"
33     #include "MitAna/PhysicsMod/interface/FullExampleMod.h"
34     #endif
35    
36     //--------------------------------------------------------------------------------------------------
37     void executePhysicsExample(const char *fileset = "",
38     const char *skim = "",
39     const char *dataset = "",
40     const char *book = "",
41     const char *catalogDir = "",
42     const char *outputName = "",
43     int sampleID = -1,
44     int nEvents = -1)
45     {
46     //------------------------------------------------------------------------------------------------
47     // some global setups
48     //------------------------------------------------------------------------------------------------
49     using namespace mithep;
50     gDebugMask = Debug::kAnalysis;
51     gDebugLevel = 1;
52    
53     //------------------------------------------------------------------------------------------------
54     // set up information
55     //------------------------------------------------------------------------------------------------
56     Bool_t isFastSim = kFALSE;
57     if(sampleID >= 100) isFastSim = kTRUE;
58    
59     bool useHLTE29 = true;
60    
61     //------------------------------------------------------------------------------------------------
62     // generator information
63     //------------------------------------------------------------------------------------------------
64     GeneratorMod *generatorMod = new GeneratorMod;
65    
66     //------------------------------------------------------------------------------------------------
67     // HLT information
68     //------------------------------------------------------------------------------------------------
69     HLTMod *hltmod = new HLTMod;
70     if(useHLTE29 == false) {
71     hltmod->AddTrigger("HLT_Ele10_SW_L1R");
72     hltmod->AddTrigger("HLT_Ele15_SW_LooseTrackIso_L1R");
73     hltmod->AddTrigger("HLT_Ele15_SW_EleId_L1R");
74     hltmod->AddTrigger("HLT_Ele15_LW_L1R");
75     hltmod->AddTrigger("HLT_Ele15_SC10_LW_L1R");
76     hltmod->AddTrigger("HLT_Ele20_SW_L1R");
77     hltmod->AddTrigger("HLT_IsoMu9");
78     } else {
79     hltmod->AddTrigger("HLT_Ele10_LW_EleId_L1R");
80     hltmod->AddTrigger("HLT_Mu9");
81     hltmod->SetBitsName("HLTBits_E29");
82     }
83     hltmod->SetTrigObjsName("myhltobjs");
84    
85    
86     //------------------------------------------------------------------------------------------------
87     // publisher Mod
88     //------------------------------------------------------------------------------------------------
89     PublisherMod<CaloJet,Jet> *pubJet = new PublisherMod<CaloJet,Jet>("JetPub");
90     pubJet->SetInputName("AKt5Jets");
91     pubJet->SetOutputName("PubAKt5Jets");
92    
93     PublisherMod<Met,Met> *pubMet = new PublisherMod<Met,Met>("MetPub");
94     pubMet->SetInputName("TCMet");
95     pubMet->SetOutputName("PubTCMet");
96    
97     //------------------------------------------------------------------------------------------------
98     // Apply Jet/Met Corrections
99     //------------------------------------------------------------------------------------------------
100     JetCorrectionMod *jetCorr = new JetCorrectionMod;
101     jetCorr->SetCorrectionTag("Summer09_L2Relative_AK5Calo:Summer09_L3Absolute_AK5Calo");
102     jetCorr->SetInputName(pubJet->GetOutputName());
103    
104     CaloMetCorrectionMod *metCorr = new CaloMetCorrectionMod;
105     metCorr->SetInputName(pubMet->GetOutputName());
106     metCorr->SetCorrectedJetsName(jetCorr->GetOutputName());
107    
108    
109     //------------------------------------------------------------------------------------------------
110     // object id and cleaning sequence
111     //------------------------------------------------------------------------------------------------
112     MuonIDMod *muonID = new MuonIDMod;
113     ElectronIDMod *electronID = new ElectronIDMod;
114     electronID->SetIDType(TString("CustomTight"));
115     PhotonIDMod *photonID = new PhotonIDMod;
116     photonID->SetIDType(TString("Custom"));
117     TauIDMod *tauID = new TauIDMod;
118     JetIDMod *jetID = new JetIDMod;
119     jetID->SetInputName(jetCorr->GetOutputName());
120     jetID->SetUseCorrection(kTRUE);
121     jetID->SetPtCut(30.0);
122     jetID->SetEtaMaxCut(5.0);
123     jetID->SetOutputName(ModNames::gkGoodJetsName);
124     ElectronCleaningMod *electronCleaning = new ElectronCleaningMod;
125     PhotonCleaningMod *photonCleaning = new PhotonCleaningMod;
126     TauCleaningMod *tauCleaning = new TauCleaningMod;
127     JetCleaningMod *jetCleaning = new JetCleaningMod;
128     jetCleaning->SetGoodJetsName(ModNames::gkGoodJetsName);
129     jetCleaning->SetCleanJetsName(ModNames::gkCleanJetsName);
130    
131     //------------------------------------------------------------------------------------------------
132     // merge modules
133     //------------------------------------------------------------------------------------------------
134     MergeLeptonsMod *mergeLeptonsMod = new MergeLeptonsMod;
135     mergeLeptonsMod->SetMuonsName(muonID->GetOutputName());
136     mergeLeptonsMod->SetElectronsName(electronCleaning->GetOutputName());
137    
138     //------------------------------------------------------------------------------------------------
139     // analyses modules
140     //------------------------------------------------------------------------------------------------
141     FullExampleMod *analysisMod = new FullExampleMod;
142     analysisMod->SetMuonName(muonID->GetOutputName());
143     analysisMod->SetMuonsFromBranch(kFALSE);
144     analysisMod->SetElectronName(electronID->GetOutputName());
145     analysisMod->SetElectronsFromBranch(kFALSE);
146    
147    
148     //------------------------------------------------------------------------------------------------
149     // making analysis chain
150     //------------------------------------------------------------------------------------------------
151     generatorMod->Add(muonID);
152     muonID->Add(electronID);
153     electronID->Add(photonID);
154     photonID->Add(tauID);
155     tauID->Add(pubJet);
156     pubJet->Add(pubMet);
157     pubMet->Add(jetCorr);
158     jetCorr->Add(metCorr);
159     metCorr->Add(jetID);
160     jetID->Add(electronCleaning);
161     electronCleaning->Add(photonCleaning);
162     photonCleaning->Add(tauCleaning);
163     tauCleaning->Add(jetCleaning);
164     jetCleaning->Add(mergeLeptonsMod);
165     mergeLeptonsMod->Add(analysisMod);
166    
167     //------------------------------------------------------------------------------------------------
168     // setup analysis
169     //------------------------------------------------------------------------------------------------
170     Analysis *ana = new Analysis;
171     ana->SetUseHLT(kFALSE);
172     ana->SetKeepHierarchy(kTRUE);
173     if (nEvents >= 0)
174     ana->SetProcessNEvents(nEvents);
175     ana->SetSuperModule(generatorMod);
176    
177     //------------------------------------------------------------------------------------------------
178     // organize input
179     //------------------------------------------------------------------------------------------------
180     printf("\nRely on Catalog: %s\n",catalogDir);
181     printf(" -> Book: %s Dataset: %s Skim: %s Fileset: %s <-\n\n",book,dataset,skim,fileset);
182     Catalog *c = new Catalog(catalogDir);
183     TString skimdataset = TString(dataset)+TString("/") +TString(skim);
184     Dataset *d = NULL;
185     if (TString(skim).CompareTo("noskim") == 0)
186     d = c->FindDataset(book,dataset,fileset);
187     else
188     d = c->FindDataset(book,skimdataset.Data(),fileset);
189 bendavid 1.2 ana->AddDataset(d);
190     //ana->AddFile("rfio:/castor/cern.ch/user/p/paus/filler/011/s09-ttbar-mc3/s09-ttbar-mc3_000_10.root");
191 bendavid 1.1
192     //------------------------------------------------------------------------------------------------
193     // organize output
194     //------------------------------------------------------------------------------------------------
195     TString rootFile = TString(outputName);
196     rootFile += TString("_") + TString(dataset) + TString("_") + TString(skim);
197     if (TString(fileset) != TString(""))
198     rootFile += TString("_") + TString(fileset);
199     rootFile += TString(".root");
200     printf("\nRoot output: %s\n\n",rootFile.Data());
201     ana->SetOutputName(rootFile.Data());
202    
203     //------------------------------------------------------------------------------------------------
204     // run the analysis after successful initialisation
205     //------------------------------------------------------------------------------------------------
206     ana->Run(!gROOT->IsBatch());
207    
208     return;
209     }
210    
211     //--------------------------------------------------------------------------------------------------
212     void runPhysicsExample(const char *fileset = "",
213     const char *skim = "noskim",
214     const char *dataset = "s09-ttbar-mc3",
215     const char *book = "cern/filler/011",
216     const char *catalogDir = "/home/mitprod/catalog",
217     const char *outputName = "PhysicsExample",
218     int nEvents = 10000,
219     int runTypeIndex = -1)
220     {
221     TString outfileName = TString(outputName);
222     executePhysicsExample(fileset,skim,dataset,book,catalogDir,outfileName,runTypeIndex,nEvents);
223     }