ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitPhysics/macros/examples/runHgg2012.C
Revision: 1.7
Committed: Tue May 29 21:19:08 2012 UTC (12 years, 11 months ago) by mingyang
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_028a, Mit_028
Changes since 1.6: +4 -2 lines
Log Message:
apply new scale

File Contents

# User Rev Content
1 mingyang 1.7 // $Id: runHgg2012.C,v 1.6 2012/05/29 17:11:34 bendavid Exp $
2 bendavid 1.1 #if !defined(__CINT__) || defined(__MAKECINT__)
3     #include <TSystem.h>
4     #include <TProfile.h>
5     #include "MitAna/DataUtil/interface/Debug.h"
6     #include "MitAna/Catalog/interface/Catalog.h"
7     #include "MitAna/TreeMod/interface/Analysis.h"
8     #include "MitAna/TreeMod/interface/HLTMod.h"
9     #include "MitAna/PhysicsMod/interface/RunLumiSelectionMod.h"
10     #include "MitAna/PhysicsMod/interface/MCProcessSelectionMod.h"
11     #include "MitAna/PhysicsMod/interface/PublisherMod.h"
12     #include "MitAna/DataTree/interface/JetCol.h"
13     #include "MitAna/DataTree/interface/PFJetCol.h"
14     #include "MitPhysics/Init/interface/ModNames.h"
15     #include "MitPhysics/Mods/interface/GoodPVFilterMod.h"
16     #include "MitPhysics/Mods/interface/MuonIDMod.h"
17     #include "MitPhysics/Mods/interface/ElectronIDMod.h"
18     #include "MitPhysics/Mods/interface/ElectronCleaningMod.h"
19     #include "MitPhysics/Mods/interface/PhotonIDMod.h"
20     #include "MitPhysics/Mods/interface/PhotonPairSelector.h"
21     #include "MitPhysics/Mods/interface/PhotonTreeWriter.h"
22     #include "MitPhysics/Mods/interface/PhotonCleaningMod.h"
23     #include "MitPhysics/Mods/interface/MergeLeptonsMod.h"
24     #include "MitPhysics/Mods/interface/JetCorrectionMod.h"
25     #include "MitPhysics/Mods/interface/PhotonMvaMod.h"
26     #include "MitPhysics/Mods/interface/MVASystematicsMod.h"
27    
28     #endif
29    
30     //--------------------------------------------------------------------------------------------------
31     void runHgg2012(const char *fileset = "0000",
32     const char *skim = "noskim",
33     //const char *dataset = "f11--h120gg-gf-v14b-pu",
34     //const char *dataset = "r11a-pho-j16-v1",
35 bendavid 1.6 const char *dataset = "s12-h120gg-gf-v9",
36 bendavid 1.1 //const char *dataset = "s12-pj40-2em-v9",
37     //const char *dataset = "s12-zllm50-v9",
38     //const char *dataset = "f11--h121gg-gf-v14b-pu",
39 mingyang 1.4 //const char *dataset = "r12a-pho-pr-v1",
40 bendavid 1.6 //const char *dataset = "s12-pj40-2em-v9",
41 bendavid 1.1 const char *book = "t2mit/filefi/028",
42     const char *catalogDir = "/home/cmsprod/catalog",
43     const char *outputName = "hgg",
44 mingyang 1.7 int nEvents = 1000)
45 bendavid 1.1 {
46     //------------------------------------------------------------------------------------------------
47     // some parameters get passed through the environment
48     //------------------------------------------------------------------------------------------------
49     char json[1024], overlap[1024];
50     float overlapCut = -1;
51    
52     if (gSystem->Getenv("MIT_PROD_JSON"))
53     sprintf(json, "%s",gSystem->Getenv("MIT_PROD_JSON"));
54     else {
55     sprintf(json, "%s", "~");
56     //printf(" JSON file was not properly defined. EXIT!\n");
57     //return;
58     }
59    
60 mingyang 1.4 TString jsonFile = TString("/home/mingyang/cms/json/") + TString(json);
61     //TString jsonFile = TString("/home/mingyang/cms/json/") + TString("Cert_136033-149442_7TeV_Dec22ReReco_Collisions10_JSON_v4.txt");
62     Bool_t isData = ( (jsonFile.CompareTo("/home/mingyang/cms/json/~") != 0) );
63 bendavid 1.1
64     if (gSystem->Getenv("MIT_PROD_OVERLAP")) {
65     sprintf(overlap,"%s",gSystem->Getenv("MIT_PROD_OVERLAP"));
66     if (EOF == sscanf(overlap,"%f",&overlapCut)) {
67     printf(" Overlap was not properly defined. EXIT!\n");
68     return;
69     }
70     }
71     else {
72     sprintf(overlap,"%s", "-1.0");
73     //printf(" OVERLAP file was not properly defined. EXIT!\n");
74     //return;
75     }
76    
77     printf("\n Initialization worked. \n\n");
78    
79     //------------------------------------------------------------------------------------------------
80     // some global setups
81     //------------------------------------------------------------------------------------------------
82     using namespace mithep;
83     gDebugMask = Debug::kGeneral;
84     gDebugLevel = 3;
85    
86     //------------------------------------------------------------------------------------------------
87     // set up information
88     //------------------------------------------------------------------------------------------------
89     RunLumiSelectionMod *runLumiSel = new RunLumiSelectionMod;
90     runLumiSel->SetAcceptMC(kTRUE); // Monte Carlo events are always accepted
91    
92     MCProcessSelectionMod *mcselmod = new MCProcessSelectionMod;
93    
94     MVASystematicsMod *sysMod = new MVASystematicsMod;
95     sysMod->SetMCR9Scale(1.0035, 1.0035);
96     sysMod->SetIsData(isData);
97    
98     // only select on run- and lumisection numbers when valid json file present
99 mingyang 1.4 if ((jsonFile.CompareTo("/home/mingyang/cms/json/~") != 0) &&
100     (jsonFile.CompareTo("/home/mingyang/cms/json/-") != 0) ) {
101 bendavid 1.1 runLumiSel->AddJSONFile(jsonFile.Data());
102     }
103 mingyang 1.4 if ((jsonFile.CompareTo("/home/mingyang/cms/json/-") == 0) ) {
104 bendavid 1.1 printf("\n WARNING -- Looking at data without JSON file: always accept.\n\n");
105     runLumiSel->SetAbortIfNotAccepted(kFALSE); // accept all events if there is no valid JSON file
106     }
107    
108     printf("\n Run lumi worked. \n\n");
109    
110     //------------------------------------------------------------------------------------------------
111     // HLT information
112     //------------------------------------------------------------------------------------------------
113     HLTMod *hltModM = new HLTMod("HLTModM");
114     hltModM->AddTrigger("HLT_Mu9");
115     hltModM->AddTrigger("HLT_Mu11");
116     hltModM->AddTrigger("HLT_Mu15_v1");
117     hltModM->SetTrigObjsName("MyHltMuonObjs");
118     hltModM->SetAbortIfNotAccepted(kFALSE);
119    
120     HLTMod *hltModE = new HLTMod("HLTModE");
121     hltModE->AddTrigger("HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v1",150000,161176);
122     hltModE->AddTrigger("HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v2",161179,163261);
123     hltModE->AddTrigger("HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v3",163262,164237);
124     hltModE->AddTrigger("HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v4",165085,165888);
125     hltModE->AddTrigger("HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v5",165900,166967);
126     hltModE->AddTrigger("HLT_Ele17_CaloIdL_CaloIsoVL_Ele8_CaloIdL_CaloIsoVL_v6",166968,170053);
127     hltModE->AddTrigger("HLT_Ele17_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL_Ele8_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL_v6",170054,170759);
128     hltModE->AddTrigger("HLT_Ele17_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL_Ele8_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL_v7",170760,173198);
129     hltModE->AddTrigger("HLT_Ele17_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL_Ele8_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL_v8",173199,178380);
130     hltModE->AddTrigger("HLT_Ele17_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL_Ele8_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL_v9",178381,179889);
131     hltModE->AddTrigger("HLT_Ele17_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL_Ele8_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL_v10",179890,189999);
132     hltModE->AddTrigger("HLT_Ele17_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL_Ele8_CaloIdT_CaloIsoVL_TrkIdVL_TrkIsoVL_v*",190000,999999);
133     hltModE->SetTrigObjsName("MyHltElecObjs");
134     hltModE->SetAbortIfNotAccepted(isData);
135    
136     HLTMod *hltModES = new HLTMod("HLTModES");
137     hltModES->AddTrigger("HLT_Ele27_CaloIdVT_CaloIsoT_TrkIdT_TrkIsoT_v*",160000,189999);
138     hltModES->AddTrigger("HLT_Ele27_CaloIdVT_CaloIsoT_TrkIdT_TrkIsoT_v2",160000,189999);
139     hltModES->AddTrigger("HLT_Ele27_CaloIdVT_CaloIsoT_TrkIdT_TrkIsoT_v3",160000,189999);
140     hltModES->AddTrigger("HLT_Ele25_WP80_PFMT40_v*",160000,189999);
141     hltModES->AddTrigger("HLT_Ele27_WP80_PFMT50_v*",160000,189999);
142     hltModES->AddTrigger("HLT_Ele27_WP80_v*",190000,999999);
143     hltModES->SetTrigObjsName("MyHltElecSObjs");
144     hltModES->SetAbortIfNotAccepted(isData);
145    
146     HLTMod *hltModP = new HLTMod("HLTModP");
147    
148 bendavid 1.6 hltModP->AddTrigger("HLT_Photon26_CaloIdL_IsoVL_Photon18_CaloIdL_IsoVL_v*",160000,161176);
149 bendavid 1.1
150     hltModP->AddTrigger("HLT_Photon26_CaloIdL_IsoVL_Photon18_CaloIdL_IsoVL_v*",161216,165633);
151     hltModP->AddTrigger("HLT_Photon26_CaloIdL_IsoVL_Photon18_R9Id_v*",161216,165633);
152     hltModP->AddTrigger("HLT_Photon26_R9Id_Photon18_CaloIdL_IsoVL_v*",161216,165633);
153     hltModP->AddTrigger("HLT_Photon20_R9Id_Photon18_R9Id_v*",161216,165633);
154    
155     hltModP->AddTrigger("HLT_Photon26_CaloIdL_IsoVL_Photon18_CaloIdL_IsoVL_v*",165970,173198);
156     hltModP->AddTrigger("HLT_Photon26_CaloIdL_IsoVL_Photon18_R9Id_v*",165970,173198);
157     hltModP->AddTrigger("HLT_Photon26_R9Id_Photon18_CaloIdL_IsoVL_v*",165970,173198);
158     hltModP->AddTrigger("HLT_Photon26_R9Id_Photon18_R9Id_v*",165970,173198);
159     hltModP->AddTrigger("HLT_Photon36_CaloIdL_IsoVL_Photon22_CaloIdL_IsoVL_v*",165970,173198);
160     hltModP->AddTrigger("HLT_Photon36_R9Id_Photon22_CaloIdL_IsoVL_v*",165970,173198);
161     hltModP->AddTrigger("HLT_Photon36_R9Id_Photon22_R9Id_v*",165970,173198);
162    
163     hltModP->AddTrigger("HLT_Photon36_CaloId_IsoVL_Photon22_R9Id_v*",165970,166967);
164     hltModP->AddTrigger("HLT_Photon36_CaloIdL_IsoVL_Photon22_R9Id_v*",167039,173198);
165    
166     hltModP->AddTrigger("HLT_Photon26_CaloIdXL_IsoXL_Photon18_CaloIdXL_IsoXL_v*",173236,178380);
167     hltModP->AddTrigger("HLT_Photon26_CaloIdXL_IsoXL_Photon18_R9Id_v*",173236,178380);
168     hltModP->AddTrigger("HLT_Photon26_R9Id_Photon18_CaloIdXL_IsoXL_v*",173236,178380);
169     hltModP->AddTrigger("HLT_Photon26_R9Id_Photon18_R9Id_v*",173236,178380);
170     hltModP->AddTrigger("HLT_Photon36_CaloIdL_IsoVL_Photon22_CaloIdL_IsoVL_v*",173236,178380);
171     hltModP->AddTrigger("HLT_Photon36_CaloIdL_IsoVL_Photon22_R9Id_v*",173236,178380);
172     hltModP->AddTrigger("HLT_Photon36_R9Id_Photon22_CaloIdL_IsoVL_v*",173236,178380);
173     hltModP->AddTrigger("HLT_Photon36_R9Id_Photon22_R9Id_v*",173236,178380);
174    
175     hltModP->AddTrigger("HLT_Photon26_CaloIdXL_IsoXL_Photon18_CaloIdXL_IsoXL_Mass60_v*",178420,189999);
176     hltModP->AddTrigger("HLT_Photon26_CaloIdXL_IsoXL_Photon18_R9IdT_Mass60_v*",178420,189999);
177     hltModP->AddTrigger("HLT_Photon26_R9IdT_Photon18_CaloIdXL_IsoXL_Mass60_v*",178420,189999);
178     hltModP->AddTrigger("HLT_Photon26_R9IdT_Photon18_R9IdT_Mass60_v*",178420,189999);
179     hltModP->AddTrigger("HLT_Photon36_CaloIdL_IsoVL_Photon22_CaloIdL_IsoVL_v*",178420,189999);
180     hltModP->AddTrigger("HLT_Photon36_CaloIdL_IsoVL_Photon22_R9Id_v*",178420,189999);
181     hltModP->AddTrigger("HLT_Photon36_R9Id_Photon22_CaloIdL_IsoVL_v*",178420,189999);
182 bendavid 1.6 hltModP->AddTrigger("HLT_Photon36_R9Id_Photon22_R9Id_v*",178420,189999);
183 mingyang 1.4
184     hltModP->AddTrigger("HLT_Photon26_CaloId10_Iso50_Photon18_CaloId10_Iso50_Mass60_v*",190000,999999);
185     hltModP->AddTrigger("HLT_Photon26_CaloId10_Iso50_Photon18_R9Id85_Mass60_v*",190000,999999);
186     hltModP->AddTrigger("HLT_Photon26_R9Id85_OR_CaloId10_Iso50_Photon18_R9Id85_OR_CaloId10_Iso50_Mass60_v*",190000,999999);
187     hltModP->AddTrigger("HLT_Photon26_R9Id85_Photon18_CaloId10_Iso50_Mass60_v*",190000,999999);
188     hltModP->AddTrigger("HLT_Photon26_R9Id85_Photon18_R9Id85_Mass60_v*",190000,999999);
189     hltModP->AddTrigger("HLT_Photon36_CaloId10_Iso50_Photon22_CaloId10_Iso50_v*",190000,999999);
190     hltModP->AddTrigger("HLT_Photon36_CaloId10_Iso50_Photon22_R9Id85_v*",190000,999999);
191     hltModP->AddTrigger("HLT_Photon36_R9Id85_OR_CaloId10_Iso50_Photon22_R9Id85_OR_CaloId10_Iso50_v*",190000,999999);
192     hltModP->AddTrigger("HLT_Photon36_R9Id85_Photon22_CaloId10_Iso50_v*",190000,999999);
193     hltModP->AddTrigger("HLT_Photon36_R9Id85_Photon22_R9Id85_v*",190000,999999);
194 bendavid 1.1
195     hltModP->SetTrigObjsName("MyHltPhotObjs");
196     hltModP->SetAbortIfNotAccepted(isData);
197    
198     //------------------------------------------------------------------------------------------------
199     // select events with a good primary vertex
200     //------------------------------------------------------------------------------------------------
201     GoodPVFilterMod *goodPVFilterMod = new GoodPVFilterMod;
202     goodPVFilterMod->SetMinVertexNTracks(0);
203     goodPVFilterMod->SetMinNDof (4.0);
204     goodPVFilterMod->SetMaxAbsZ (24.0);
205     goodPVFilterMod->SetMaxRho (2.0);
206     goodPVFilterMod->SetAbortIfNotAccepted(kFALSE);
207     goodPVFilterMod->SetIsMC(!isData);
208    
209     GoodPVFilterMod *goodPVFilterModE = new GoodPVFilterMod("GoodPVFilterModE");
210     goodPVFilterModE->SetOutputName("GoodVertexesE");
211     goodPVFilterModE->SetMinVertexNTracks(0);
212     goodPVFilterModE->SetMinNDof (4.0);
213     goodPVFilterModE->SetMaxAbsZ (24.0);
214     goodPVFilterModE->SetMaxRho (2.0);
215     goodPVFilterModE->SetIsMC(!isData);
216    
217     GoodPVFilterMod *goodPVFilterModES = new GoodPVFilterMod("GoodPVFilterModES");
218     goodPVFilterModES->SetOutputName("GoodVertexesES");
219     goodPVFilterModES->SetMinVertexNTracks(0);
220     goodPVFilterModES->SetMinNDof (4.0);
221     goodPVFilterModES->SetMaxAbsZ (24.0);
222     goodPVFilterModES->SetMaxRho (2.0);
223    
224    
225     //------------------------------------------------------------------------------------------------
226     // object id and cleaning sequence
227     //------------------------------------------------------------------------------------------------
228     MuonIDMod *muonId = new MuonIDMod;
229     muonId->SetClassType ("Global");
230     muonId->SetIDType ("ZMuId");
231     muonId->SetIsoType ("TrackCaloSliding");
232     muonId->SetApplyD0Cut(kTRUE);
233    
234    
235     PublisherMod<PFJet,Jet> *pubJet = new PublisherMod<PFJet,Jet>("JetPub");
236     pubJet->SetInputName("AKt5PFJets");
237     pubJet->SetOutputName("PubAKt5PFJets");
238    
239     PublisherMod<PFJet,Jet> *pubJetOpen = new PublisherMod<PFJet,Jet>("JetPubOpen");
240     pubJetOpen->SetInputName("AKt5PFJets");
241     pubJetOpen->SetOutputName("PubAKt5PFJetsOpen");
242    
243     JetCorrectionMod *jetCorr = new JetCorrectionMod;
244     if(isData){
245 bendavid 1.6 jetCorr->AddCorrectionFromFile(std::string((gSystem->Getenv("CMSSW_BASE") + TString("/src/MitPhysics/data/Summer12_V1_DATA_L1FastJet_AK5PF.txt")).Data()));
246     jetCorr->AddCorrectionFromFile(std::string((gSystem->Getenv("CMSSW_BASE") + TString("/src/MitPhysics/data/Summer12_V1_DATA_L2Relative_AK5PF.txt")).Data()));
247     jetCorr->AddCorrectionFromFile(std::string((gSystem->Getenv("CMSSW_BASE") + TString("/src/MitPhysics/data/Summer12_V1_DATA_L3Absolute_AK5PF.txt")).Data()));
248     jetCorr->AddCorrectionFromFile(std::string((gSystem->Getenv("CMSSW_BASE") + TString("/src/MitPhysics/data/Summer12_V1_DATA_L2L3Residual_AK5PF.txt")).Data()));
249     }
250     else {
251     jetCorr->AddCorrectionFromFile(std::string((gSystem->Getenv("CMSSW_BASE") + TString("/src/MitPhysics/data/Summer12_V1_MC_L1FastJet_AK5PF.txt")).Data()));
252     jetCorr->AddCorrectionFromFile(std::string((gSystem->Getenv("CMSSW_BASE") + TString("/src/MitPhysics/data/Summer12_V1_MC_L2Relative_AK5PF.txt")).Data()));
253     jetCorr->AddCorrectionFromFile(std::string((gSystem->Getenv("CMSSW_BASE") + TString("/src/MitPhysics/data/Summer12_V1_MC_L3Absolute_AK5PF.txt")).Data()));
254 bendavid 1.1 }
255     jetCorr->SetInputName(pubJet->GetOutputName());
256     jetCorr->SetCorrectedName("CorrectedJets");
257    
258    
259     Bool_t excludedoubleprompt = kFALSE;
260     if (TString(dataset).Contains("-pj")) {
261     mcselmod->ExcludeProcess(18);
262     mcselmod->ExcludeProcess(114);
263 mingyang 1.4 //excludedoubleprompt = kTRUE;
264     excludedoubleprompt = kFALSE;
265 bendavid 1.1 }
266    
267     if (TString(dataset).Contains("-qcd2em") || TString(dataset).Contains("-qcd-2em")) {
268 mingyang 1.4 //excludedoubleprompt = kTRUE;
269     excludedoubleprompt = kFALSE;
270 bendavid 1.1 }
271    
272     Bool_t is25 = kFALSE;
273     if (TString(book).Contains("025")) is25 = kTRUE;
274    
275     PhotonMvaMod *photreg = new PhotonMvaMod;
276     photreg->SetRegressionVersion(3);
277     photreg->SetRegressionWeights(std::string((gSystem->Getenv("CMSSW_BASE") + TString("/src/MitPhysics/data/gbrv3ph_52x.root")).Data()));
278     photreg->SetOutputName("GoodPhotonsRegr");
279     photreg->SetIsData(isData);
280    
281    
282     PhotonPairSelector *photcic = new PhotonPairSelector("PhotonPairSelectorCiC");
283     photcic->SetOutputName("GoodPhotonsCIC");
284     photcic->SetOutputVtxName("OutVtxCiC");
285     photcic->SetPhotonSelType("CiCPFSelection");
286     photcic->SetVertexSelType("CiCMVASelection");
287 bendavid 1.6 //photcic->SetUseSingleLegConversions(kTRUE);
288 bendavid 1.1 photcic->DoMCSmear(kTRUE);
289 bendavid 1.6 photcic->DoDataEneCorr(kFALSE);
290 bendavid 1.1 photcic->SetPhotonsFromBranch(kFALSE);
291     photcic->SetInputPhotonsName(photreg->GetOutputName());
292 bendavid 1.6 photcic->SetMCSmearFactors(0.0067,0.0077,0.0096,0.0141,0.0196,0.0268,0.0279,0.0293,0.0301);//ming:smear(sigE/E)
293     // photcic->AddEnCorrPerRun(160000,167913,0.9905,0.9905,0.9971,0.9976,1.0094,0.9994,1.0044,0.9968,1.0079);
294     // photcic->AddEnCorrPerRun(170249,172619,0.9909,0.9909,0.9975,0.9994,1.0112,0.9962,1.0012,0.9962,1.0072);
295     // photcic->AddEnCorrPerRun(172620,173692,0.9909,0.9909,0.9975,0.9977,1.0096,0.9963,1.0013,0.9947,1.0057);
296     // photcic->AddEnCorrPerRun(175860,177139,0.9911,0.9911,0.9977,0.9990,1.0109,0.9922,0.9973,0.9967,1.0077);
297     // photcic->AddEnCorrPerRun(177140,178421,0.9910,0.9910,0.9975,0.9987,1.0105,0.9921,0.9972,0.9975,1.0085);
298     // photcic->AddEnCorrPerRun(178424,999999,0.9903,0.9903,0.9969,0.9976,1.0095,0.9889,0.9940,0.9976,1.0086);
299 bendavid 1.1 photcic->SetDoMCR9Scaling(kTRUE);
300     photcic->SetMCR9Scale(1.0035, 1.0035);
301     photcic->SetDoMCErrScaling(kTRUE);
302     photcic->SetMCErrScale(1.07, 1.045);
303     photcic->SetJetsName(jetCorr->GetOutputName());
304     photcic->SetIsData(isData);
305    
306     PhotonPairSelector *photcicnoeleveto = new PhotonPairSelector("PhotonPairSelectorCiCInvertEleVeto");
307     photcicnoeleveto->SetOutputName("GoodPhotonsCICNoEleVeto");
308     photcicnoeleveto->SetOutputVtxName("OutVtxCiCInvertEleVeto");
309     photcicnoeleveto->SetPhotonSelType("CiCPFSelection");
310     photcicnoeleveto->SetVertexSelType("CiCMVASelection");
311 bendavid 1.6 //photcicnoeleveto->SetUseSingleLegConversions(kTRUE);
312 bendavid 1.1 photcicnoeleveto->DoMCSmear(kTRUE);
313 bendavid 1.6 photcicnoeleveto->DoDataEneCorr(kFALSE);
314 bendavid 1.1 photcicnoeleveto->SetPhotonsFromBranch(kFALSE);
315     photcicnoeleveto->SetInputPhotonsName(photreg->GetOutputName());
316 bendavid 1.6 photcicnoeleveto->SetMCSmearFactors(0.0067,0.0077,0.0096,0.0141,0.0196,0.0268,0.0279,0.0293,0.0301);//ming:smear(sigE/E)
317     // photcicnoeleveto->AddEnCorrPerRun(160000,167913,0.9905,0.9905,0.9971,0.9976,1.0094,0.9994,1.0044,0.9968,1.0079);
318     // photcicnoeleveto->AddEnCorrPerRun(170249,172619,0.9909,0.9909,0.9975,0.9994,1.0112,0.9962,1.0012,0.9962,1.0072);
319     // photcicnoeleveto->AddEnCorrPerRun(172620,173692,0.9909,0.9909,0.9975,0.9977,1.0096,0.9963,1.0013,0.9947,1.0057);
320     // photcicnoeleveto->AddEnCorrPerRun(175860,177139,0.9911,0.9911,0.9977,0.9990,1.0109,0.9922,0.9973,0.9967,1.0077);
321     // photcicnoeleveto->AddEnCorrPerRun(177140,178421,0.9910,0.9910,0.9975,0.9987,1.0105,0.9921,0.9972,0.9975,1.0085);
322     // photcicnoeleveto->AddEnCorrPerRun(178424,999999,0.9903,0.9903,0.9969,0.9976,1.0095,0.9889,0.9940,0.9976,1.0086);
323 bendavid 1.1 photcicnoeleveto->SetDoMCR9Scaling(kTRUE);
324     photcicnoeleveto->SetMCR9Scale(1.0035, 1.0035);
325     photcicnoeleveto->SetDoMCErrScaling(kTRUE);
326     photcicnoeleveto->SetMCErrScale(1.07, 1.045);
327     photcicnoeleveto->SetApplyEleVeto(kFALSE);
328     photcicnoeleveto->SetInvertElectronVeto(kTRUE);
329     photcicnoeleveto->SetJetsName(jetCorr->GetOutputName());
330     photcicnoeleveto->SetIsData(isData);
331    
332    
333     PhotonPairSelector *photpresel = new PhotonPairSelector("PhotonPairSelectorPresel");
334     photpresel->SetOutputName("GoodPhotonsPresel");
335     photpresel->SetPhotonSelType("MITPFSelection");
336     photpresel->SetVertexSelType("CiCMVASelection");
337 bendavid 1.6 //photpresel->SetUseSingleLegConversions(kTRUE);
338 mingyang 1.3 photpresel->SetIdMVAType("2012IdMVA_globe");
339 bendavid 1.1 //photpresel->SetVertexSelType("MetSigSelection");
340     photpresel->DoMCSmear(kTRUE);
341 bendavid 1.6 photpresel->DoDataEneCorr(kFALSE);
342 bendavid 1.1 photpresel->SetPhotonsFromBranch(kFALSE);
343     photpresel->SetInputPhotonsName(photreg->GetOutputName());
344     //photpresel->SetMCSmearFactors(0.0045, 0.0084, 0.0109, 0.0156, 0.0203,0.0303,0.0326,0.0318,0.0331);
345     photpresel->SetMCSmearFactors(0.0067,0.0077,0.0096,0.0141,0.0196,0.0268,0.0279,0.0293,0.0301);//ming:smear(sigE/E)
346     //photpresel->AddEnCorrPerRun(160000,167913,0.9905,0.9905,0.9971,0.9976,1.0094,0.9994,1.0044,0.9968,1.0079);
347     //photpresel->AddEnCorrPerRun(170249,172619,0.9909,0.9909,0.9975,0.9994,1.0112,0.9962,1.0012,0.9962,1.0072);
348     //photpresel->AddEnCorrPerRun(172620,173692,0.9909,0.9909,0.9975,0.9977,1.0096,0.9963,1.0013,0.9947,1.0057);
349     //photpresel->AddEnCorrPerRun(175860,177139,0.9911,0.9911,0.9977,0.9990,1.0109,0.9922,0.9973,0.9967,1.0077);
350     //photpresel->AddEnCorrPerRun(177140,178421,0.9910,0.9910,0.9975,0.9987,1.0105,0.9921,0.9972,0.9975,1.0085);
351     //photpresel->AddEnCorrPerRun(178424,999999,0.9903,0.9903,0.9969,0.9976,1.0095,0.9889,0.9940,0.9976,1.0086);
352 bendavid 1.6 // photpresel->AddEnCorrPerRun(160431,167913,0.9941,0.9941,1.0004,0.9916,1.0045,1.0033,1.0082,0.9958,1.0064);//ming:Emc/Edata
353     // photpresel->AddEnCorrPerRun(170000,172619,0.9954,0.9954,1.0016,0.9937,1.0066,0.9976,1.0025,0.9940,1.0046);
354     // photpresel->AddEnCorrPerRun(172620,173692,0.9955,0.9955,1.0017,0.9929,1.0058,0.9986,1.0035,0.9923,1.0029);
355     // photpresel->AddEnCorrPerRun(175830,177139,0.9958,0.9958,1.0021,0.9944,1.0073,0.9968,1.0017,0.9933,1.004);
356     // photpresel->AddEnCorrPerRun(177140,178421,0.9962,0.9962,1.0025,0.9946,1.0075,0.9960,1.0010,0.9944,1.005);
357     // photpresel->AddEnCorrPerRun(178424,180252,0.9961,0.9961,1.0024,0.9942,1.0071,0.9921,0.9970,0.9953,1.0059);
358 bendavid 1.1 photpresel->SetDoMCR9Scaling(kTRUE);
359     photpresel->SetMCR9Scale(1.0035, 1.0035);
360     photpresel->SetDoMCSigIEtaIEtaScaling(kTRUE);
361     photpresel->SetDoMCWidthScaling(kTRUE);
362 mingyang 1.3 photpresel->SetMCSigIEtaIEtaScale(0.87,0.0011,0.99,0);
363     photpresel->SetMCWidthScale(0.99,0);
364 mingyang 1.7 photpresel->SetDoMCNewScaling(kTRUE);
365 bendavid 1.1 photpresel->SetDoMCErrScaling(kTRUE);
366     photpresel->SetMCErrScale(1.07, 1.045);
367     photpresel->SetJetsName(jetCorr->GetOutputName());
368     photpresel->SetIsData(isData);
369    
370     PhotonPairSelector *photpreselinverteleveto = new PhotonPairSelector("PhotonPairSelectorPreselInvertEleVeto");
371     photpreselinverteleveto->SetOutputName("GoodPhotonsPreselInvertEleVeto");
372     photpreselinverteleveto->SetOutputVtxName("OutVtxPreselInvertEleVeto");
373     photpreselinverteleveto->SetPhotonSelType("MITPFSelection");
374 mingyang 1.3 photpreselinverteleveto->SetIdMVAType("2012IdMVA_globe");
375 bendavid 1.1 photpreselinverteleveto->SetVertexSelType("CiCMVASelection");
376 bendavid 1.6 //photpreselinverteleveto->SetUseSingleLegConversions(kTRUE);
377 bendavid 1.1 photpreselinverteleveto->DoMCSmear(kTRUE);
378 bendavid 1.6 photpreselinverteleveto->DoDataEneCorr(kFALSE);
379 bendavid 1.1 photpreselinverteleveto->SetPhotonsFromBranch(kFALSE);
380     photpreselinverteleveto->SetInputPhotonsName(photreg->GetOutputName());
381 bendavid 1.6 photpreselinverteleveto->SetMCSmearFactors(0.0067,0.0077,0.0096,0.0141,0.0196,0.0268,0.0279,0.0293,0.0301);//ming:smear(sigE/E)
382     // photpreselinverteleveto->AddEnCorrPerRun(160000,167913,0.9905,0.9905,0.9971,0.9976,1.0094,0.9994,1.0044,0.9968,1.0079);
383     // photpreselinverteleveto->AddEnCorrPerRun(170249,172619,0.9909,0.9909,0.9975,0.9994,1.0112,0.9962,1.0012,0.9962,1.0072);
384     // photpreselinverteleveto->AddEnCorrPerRun(172620,173692,0.9909,0.9909,0.9975,0.9977,1.0096,0.9963,1.0013,0.9947,1.0057);
385     // photpreselinverteleveto->AddEnCorrPerRun(175860,177139,0.9911,0.9911,0.9977,0.9990,1.0109,0.9922,0.9973,0.9967,1.0077);
386     // photpreselinverteleveto->AddEnCorrPerRun(177140,178421,0.9910,0.9910,0.9975,0.9987,1.0105,0.9921,0.9972,0.9975,1.0085);
387     // photpreselinverteleveto->AddEnCorrPerRun(178424,999999,0.9903,0.9903,0.9969,0.9976,1.0095,0.9889,0.9940,0.9976,1.0086);
388 bendavid 1.1 photpreselinverteleveto->SetDoMCR9Scaling(kTRUE);
389     photpreselinverteleveto->SetMCR9Scale(1.0035, 1.0035);
390     photpreselinverteleveto->SetDoMCSigIEtaIEtaScaling(kTRUE);
391 mingyang 1.3 photpreselinverteleveto->SetDoMCWidthScaling(kTRUE);
392     photpreselinverteleveto->SetMCSigIEtaIEtaScale(0.87,0.0011,0.99,0);
393     photpreselinverteleveto->SetMCWidthScale(0.99,0);
394 mingyang 1.7 photpreselinverteleveto->SetDoMCNewScaling(kTRUE);
395 bendavid 1.1 photpreselinverteleveto->SetDoMCErrScaling(kTRUE);
396     photpreselinverteleveto->SetMCErrScale(1.07, 1.045);
397     photpreselinverteleveto->SetApplyEleVeto(kFALSE);
398     photpreselinverteleveto->SetInvertElectronVeto(kTRUE);
399     photpreselinverteleveto->SetJetsName(jetCorr->GetOutputName());
400     photpreselinverteleveto->SetIsData(isData);
401    
402     PhotonPairSelector *photpreselnosmear = new PhotonPairSelector("PhotonPairSelectorPreselNoSmear");
403     photpreselnosmear->SetOutputName("GoodPhotonsPreselNoSmear");
404     photpreselnosmear->SetPhotonSelType("MITPFSelection");
405     photpreselnosmear->SetVertexSelType("CiCMVASelection");
406 bendavid 1.6 //photpreselnosmear->SetUseSingleLegConversions(kTRUE);
407 mingyang 1.3 photpreselnosmear->SetIdMVAType("2012IdMVA_globe");
408 bendavid 1.1 photpreselnosmear->SetPhotonsFromBranch(kFALSE);
409     photpreselnosmear->SetInputPhotonsName(photreg->GetOutputName());
410     photpreselnosmear->SetJetsName(jetCorr->GetOutputName());
411     photpreselnosmear->SetOutputVtxName("OutVtxNoSmear");
412     photpreselnosmear->SetIsData(isData);
413    
414    
415     PhotonTreeWriter *phottreecic = new PhotonTreeWriter("PhotonTreeWriterCiC");
416     phottreecic->SetPhotonsFromBranch(kFALSE);
417     phottreecic->SetInputPhotonsName(photcic->GetOutputName());
418     phottreecic->SetEnableJets(kTRUE);
419 bendavid 1.6 phottreecic->SetApplyJetId(kTRUE);
420 bendavid 1.1 phottreecic->SetPFJetsFromBranch(kFALSE);
421     phottreecic->SetPFJetName(jetCorr->GetOutputName());
422     phottreecic->SetExcludeDoublePrompt(excludedoubleprompt);
423     phottreecic->SetIsData(isData);
424     if (is25) phottreecic->SetEnablePFPhotons(kFALSE);
425    
426     PhotonTreeWriter *phottreecicnoeleveto = new PhotonTreeWriter("PhotonTreeWriterCiCInvertEleVeto");
427     phottreecicnoeleveto->SetPhotonsFromBranch(kFALSE);
428     phottreecicnoeleveto->SetInputPhotonsName(photcicnoeleveto->GetOutputName());
429     phottreecicnoeleveto->SetEnableJets(kTRUE);
430 bendavid 1.6 phottreecicnoeleveto->SetApplyJetId(kTRUE);
431 bendavid 1.1 phottreecicnoeleveto->SetPFJetsFromBranch(kFALSE);
432     phottreecicnoeleveto->SetPFJetName(jetCorr->GetOutputName());
433     phottreecicnoeleveto->SetApplyElectronVeto(kFALSE);
434     phottreecicnoeleveto->SetExcludeDoublePrompt(excludedoubleprompt);
435     phottreecicnoeleveto->SetIsData(isData);
436     if (is25) phottreecicnoeleveto->SetEnablePFPhotons(kFALSE);
437    
438     PhotonTreeWriter *phottreepresel = new PhotonTreeWriter("PhotonTreeWriterPresel");
439     phottreepresel->SetPhotonsFromBranch(kFALSE);
440     phottreepresel->SetInputPhotonsName(photpresel->GetOutputName());
441     phottreepresel->SetEnableJets(kTRUE);
442 bendavid 1.6 phottreepresel->SetApplyJetId(kTRUE);
443 bendavid 1.1 phottreepresel->SetPFJetsFromBranch(kFALSE);
444     phottreepresel->SetPFJetName(jetCorr->GetOutputName());
445     phottreepresel->SetExcludeDoublePrompt(excludedoubleprompt);
446     phottreepresel->SetIsData(isData);
447     if (is25) phottreepresel->SetEnablePFPhotons(kFALSE);
448    
449     PhotonTreeWriter *phottreepreselinverteleveto = new PhotonTreeWriter("PhotonTreeWriterPreselInvertEleVeto");
450     phottreepreselinverteleveto->SetPhotonsFromBranch(kFALSE);
451     phottreepreselinverteleveto->SetInputPhotonsName(photpreselinverteleveto->GetOutputName());
452     phottreepreselinverteleveto->SetEnableJets(kTRUE);
453 bendavid 1.6 phottreepreselinverteleveto->SetApplyJetId(kTRUE);
454 bendavid 1.1 phottreepreselinverteleveto->SetPFJetsFromBranch(kFALSE);
455     phottreepreselinverteleveto->SetPFJetName(jetCorr->GetOutputName());
456     phottreepreselinverteleveto->SetApplyElectronVeto(kFALSE);
457     phottreepreselinverteleveto->SetExcludeDoublePrompt(excludedoubleprompt);
458     phottreepreselinverteleveto->SetIsData(isData);
459     if (is25) phottreepreselinverteleveto->SetEnablePFPhotons(kFALSE);
460    
461     PhotonTreeWriter *phottreepreselnosmear = new PhotonTreeWriter("PhotonTreeWriterPreselNoSmear");
462     phottreepreselnosmear->SetPhotonsFromBranch(kFALSE);
463     phottreepreselnosmear->SetInputPhotonsName(photpreselnosmear->GetOutputName());
464     phottreepreselnosmear->SetEnableJets(kTRUE);
465 bendavid 1.6 phottreepreselnosmear->SetApplyJetId(kTRUE);
466 bendavid 1.1 phottreepreselnosmear->SetPFJetsFromBranch(kFALSE);
467     phottreepreselnosmear->SetPFJetName(jetCorr->GetOutputName());
468     phottreepreselnosmear->SetExcludeDoublePrompt(excludedoubleprompt);
469     phottreepreselnosmear->SetIsData(isData);
470     if (is25) phottreepreselnosmear->SetEnablePFPhotons(kFALSE);
471    
472     PhotonIDMod *photidpresel = new PhotonIDMod("PhotonIDModPresel");
473     photidpresel->SetPtMin(25.0);
474     photidpresel->SetOutputName("GoodPhotonsPreselid");
475     photidpresel->SetIDType("MITPFSelection");
476     photidpresel->SetApplyElectronVeto(kTRUE);
477     photidpresel->SetIsData(isData);
478    
479     PhotonIDMod *photidpreselinvert = new PhotonIDMod("PhotonIDModPreselInvert");
480     photidpreselinvert->SetPtMin(25.0);
481     photidpreselinvert->SetOutputName("GoodPhotonsPreselidInvert");
482     photidpreselinvert->SetIDType("MITPFSelection");
483     photidpreselinvert->SetApplyElectronVeto(kFALSE);
484     photidpreselinvert->SetInvertElectronVeto(kTRUE);
485     photidpreselinvert->SetIsData(isData);
486    
487     PhotonTreeWriter *phottreesingle = new PhotonTreeWriter("PhotonTreeWriterSingle");
488     phottreesingle->SetWriteDiphotonTree(kFALSE);
489     phottreesingle->SetPhotonsFromBranch(kFALSE);
490     phottreesingle->SetInputPhotonsName(photidpresel->GetOutputName());
491     phottreesingle->SetEnableJets(kTRUE);
492     phottreesingle->SetPFJetsFromBranch(kFALSE);
493     phottreesingle->SetPFJetName(jetCorr->GetOutputName());
494     phottreesingle->SetIsData(isData);
495     if (is25) phottreesingle->SetEnablePFPhotons(kFALSE);
496    
497     PhotonTreeWriter *phottreesingleinvert = new PhotonTreeWriter("PhotonTreeWriterSingleInvert");
498     phottreesingleinvert->SetWriteDiphotonTree(kTRUE);
499     phottreesingleinvert->SetPhotonsFromBranch(kFALSE);
500     phottreesingleinvert->SetInputPhotonsName(photidpreselinvert->GetOutputName());
501     phottreesingleinvert->SetEnableJets(kTRUE);
502     phottreesingleinvert->SetPFJetsFromBranch(kFALSE);
503     phottreesingleinvert->SetPFJetName(pubJetOpen->GetOutputName());
504     phottreesingleinvert->SetApplyElectronVeto(kFALSE);
505     phottreesingleinvert->SetIsData(isData);
506     if (is25) phottreesingleinvert->SetEnablePFPhotons(kFALSE);
507    
508    
509     //------------------------------------------------------------------------------------------------
510     // making analysis chain
511     //------------------------------------------------------------------------------------------------
512     // this is how it always starts
513     runLumiSel ->Add(mcselmod);
514    
515     if (TString(dataset).Contains("-h")) {
516     mcselmod ->Add(sysMod);
517     }
518    
519     // high level trigger is always first
520     //mcselmod ->Add(hltModES);
521     mcselmod ->Add(hltModP);
522 mingyang 1.4 //mcselmod ->Add(hltModE);
523 bendavid 1.1
524     hltModP ->Add(goodPVFilterMod);
525 mingyang 1.4 //hltModE ->Add(goodPVFilterModE);
526 bendavid 1.1 //hltModES ->Add(goodPVFilterModES);
527    
528     //goodPVFilterMod ->Add(muonId);
529     goodPVFilterMod->Add(photreg);
530     photreg->Add(pubJet);
531     pubJet->Add(jetCorr);
532    
533     // simple object id modules
534 mingyang 1.4 //goodPVFilterModE -> Add(pubJetOpen);
535     //pubJetOpen -> Add(photidpreselinvert);
536 bendavid 1.1 //goodPVFilterModES ->Add(elecIdS);
537    
538    
539 bendavid 1.6 jetCorr ->Add(photcic);
540     jetCorr ->Add(photcicnoeleveto);
541 bendavid 1.1 jetCorr ->Add(photpresel);
542     jetCorr ->Add(photpreselinverteleveto);
543 bendavid 1.6 jetCorr ->Add(photpreselnosmear);
544 bendavid 1.1
545 bendavid 1.6 photcic ->Add(phottreecic);
546     photcicnoeleveto ->Add(phottreecicnoeleveto);
547 bendavid 1.1 photpresel ->Add(phottreepresel);
548     photpreselinverteleveto ->Add(phottreepreselinverteleveto);
549 bendavid 1.6 photpreselnosmear ->Add(phottreepreselnosmear);
550 bendavid 1.1
551    
552 mingyang 1.3 //jetCorr ->Add(photidpresel);
553     //photidpresel ->Add(phottreesingle);
554 bendavid 1.1
555 mingyang 1.3 //photidpreselinvert ->Add(phottreesingleinvert);
556 bendavid 1.1 //elecIdS->Add(phottreeES);
557    
558    
559     TFile::SetOpenTimeout(0);
560     //TFile::SetCacheFileDir("./rootfilecache",kTRUE,kTRUE);
561     TFile::SetReadaheadSize(128*1024*1024);
562    
563     //------------------------------------------------------------------------------------------------
564     // setup analysis
565     //------------------------------------------------------------------------------------------------
566     Analysis *ana = new Analysis;
567     ana->SetUseHLT(kTRUE);
568     ana->SetKeepHierarchy(kTRUE);
569     ana->SetSuperModule(runLumiSel);
570     ana->SetPrintScale(100);
571     if (nEvents >= 0)
572     ana->SetProcessNEvents(nEvents);
573    
574     //------------------------------------------------------------------------------------------------
575     // organize input
576     //------------------------------------------------------------------------------------------------
577     Catalog *c = new Catalog(catalogDir);
578     TString skimdataset = TString(dataset)+TString("/") +TString(skim);
579     Dataset *d = NULL;
580     TString bookstr = book;
581     //if (TString(dataset).Contains("s11-h")) bookstr.ReplaceAll("local","t2mit");
582     if (TString(skim).CompareTo("noskim") == 0)
583     d = c->FindDataset(bookstr,dataset,fileset);
584     else
585     d = c->FindDataset(bookstr,skimdataset.Data(),fileset);
586     ana->AddDataset(d);
587     //ana->AddFile("/mnt/hadoop/cmsprod/filefi/025/r11b-pho-n30-v1/4863E9D1-BC1C-E111-99BA-001A92810AF4.root");
588    
589     //------------------------------------------------------------------------------------------------
590     // organize output
591     //------------------------------------------------------------------------------------------------
592     TString rootFile = TString(outputName);
593     rootFile += TString("_") + TString(dataset) + TString("_") + TString(skim);
594     if (TString(fileset) != TString(""))
595     rootFile += TString("_") + TString(fileset);
596     rootFile += TString(".root");
597     ana->SetOutputName(rootFile.Data());
598     //ana->SetCacheSize(64*1024*1024);
599     ana->SetCacheSize(0);
600    
601     //------------------------------------------------------------------------------------------------
602     // Say what we are doing
603     //------------------------------------------------------------------------------------------------
604     printf("\n==== PARAMETER SUMMARY FOR THIS JOB ====\n");
605     printf("\n JSON file: %s\n and overlap cut: %f (%s)\n",jsonFile.Data(),overlapCut,overlap);
606     printf("\n Rely on Catalog: %s\n",catalogDir);
607     printf(" -> Book: %s Dataset: %s Skim: %s Fileset: %s <-\n",book,dataset,skim,fileset);
608     printf("\n Root output: %s\n\n",rootFile.Data());
609     printf("\n========================================\n");
610    
611     //------------------------------------------------------------------------------------------------
612     // run the analysis after successful initialisation
613     //------------------------------------------------------------------------------------------------
614     ana->Run(!gROOT->IsBatch());
615    
616     return;
617     }