00001
00002 #include <XANADOO/domain/interface/XANAEsdEvent.h>
00003 #include <XANADOO/XANAMcInfo/interface/XANAGeneratorEvent.h>
00004 #include <XANADOO/XANAMcInfo/interface/XANAGeantEvent.h>
00005 #include <XANADOO/XANAMcInfo/interface/XANAGeneratorParticle.h>
00006 #include <XANADOO/XANAElectronCandidate/interface/XANAElectronCandidate.h>
00007 #include <XANADOO/XANAElectronCandidate/interface/XANAElectronTrack.h>
00008 #include <XANADOO/XANAElectronCandidate/interface/XANAElectronGSFTrack.h>
00009 #include <XANADOO/XANAVertex/interface/XANAVertex.h>
00010 #include <XANADOO/XANATracks/interface/XANATrack.h>
00011 #include <XANADOO/XANAnalysisTools/interface/XANAmbiguityResolve.h>
00012
00013 #include <XANADOO/XANAnalysisZZ/interface/XANASelectHZZ.h>
00014 #include <XANADOO/XANAnalysisZZ/interface/XANASelectMcHZZ.h>
00015 #include <XANADOO/XANAnalysisTools/interface/XANAEvtIsolation.h>
00016 #include <XANADOO/XANAnalysisTools/interface/XANAEvtRegionIsolation.h>
00017 #include <XANADOO/XANAnalysisTools/interface/XANAIsolation.h>
00018 #include <XANADOO/XANAnalysisTools/interface/XANAnalysisTrigger.h>
00019 #include <XANADOO/XANATriggerInfo/interface/XANATriggerInfo.h>
00020 #include <XANADOO/XANAnalysisTools/interface/XANAElectronRecGen.h>
00021 #include <XANADOO/XANAnalysisTools/interface/XANAEventSelect.h>
00022 #include <XANADOO/XANAnalysisTools/interface/XANAElectronClassification.h>
00023 #include <XANADOO/XANAnalysisTools/interface/XANAElectronSelect.h>
00024 #include <XANADOO/XANAnalysisTools/interface/XANAElectronCorrection.h>
00025 #include <XANADOO/XANAnalysisTools/interface/XANAElectronMomentum.h>
00026
00027 #include "CLHEP/Geometry/Point3D.h"
00028
00029 #include "TTree.h"
00030 #include "TFile.h"
00031 #include "TBranch.h"
00032 #include "TObjArray.h"
00033 #include "TH1.h"
00034 #include "TH2.h"
00035 #include "TProfile.h"
00036 #include "TStopwatch.h"
00037 #include "TTree.h"
00038 #include "TChain.h"
00039 #include <TBits.h>
00040
00041 #include <string>
00042
00043
00044 using namespace std;
00045
00046 void initSettings(TChain *T, XANAEsdEvent **eventaddress, XANAGeneratorEvent **generatorEventaddress, XANAGeantEvent **geantEventaddress)
00047 {
00048
00049
00050
00051
00052
00053
00054
00055 T->SetBranchStatus("GeantEvent.*",0);
00056
00057
00058 T->SetBranchStatus("Event.allTrackHits_",0);
00059
00060 T->SetBranchStatus("Event.preshClusters_",0);
00061 T->SetBranchStatus("Event.hadClusters_",0);
00062 T->SetBranchStatus("Event.vertices_",0);
00063 T->SetBranchStatus("Event.muonCandidates_",0);
00064 T->SetBranchStatus("Event.muonTracks_",0);
00065 T->SetBranchStatus("Event.jets_",0);
00066 T->SetBranchStatus("Event.met_",0);
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076 T->SetBranchAddress("Event.",eventaddress);
00077 T->SetBranchAddress("GeneratorEvent.",generatorEventaddress);
00078 T->SetBranchAddress("GeantEvent.",geantEventaddress);
00079 }
00080
00081 void clean(XANAEsdEvent *event, XANAGeneratorEvent *generatorEvent, XANAGeantEvent *geantEvent){
00082 event->clear();
00083 generatorEvent->clear();
00084 geantEvent->clear();
00085
00086 }
00087
00088 int main(int argc, char** argv)
00089 {
00090
00091 if(!argv[1]) {
00092 cout<<">>> No argument, please give an argument if you want me to do something <<<"<<endl;
00093 cout<<">>> list of possible arguments for the moment: hzz120 hzz150 and tt4e <<<"<<endl;
00094 return 0;
00095 }
00096 cout<< ">>> Hello, welcome in hzz_4e_analysis program <<<"<<endl;
00097
00098 TStopwatch stopWatch;
00099 stopWatch.Start();
00100
00101
00102 bool momentumCorrection = true;
00103 bool federicoEscaleCorrection = true;
00104 bool egammaEscaleCorrection = true;
00105
00106
00107
00108 char name[80];
00109 if ( federicoEscaleCorrection && momentumCorrection )
00110 sprintf(name,"HZZ_corr_momentum_%s.root",argv[1]);
00111 else if ( federicoEscaleCorrection && !momentumCorrection )
00112 sprintf(name,"HZZ_corr_no_momentum_%s.root",argv[1]);
00113 else if ( !federicoEscaleCorrection && !momentumCorrection )
00114 sprintf(name,"HZZ_no_corr_no_momentum_%s.root",argv[1]);
00115 else if ( !federicoEscaleCorrection && !egammaEscaleCorrection && !momentumCorrection )
00116 sprintf(name,"HZZ_no_corr_at_all_%s.root",argv[1]);
00117
00118
00119 TFile f(name,"RECREATE");
00120 f.cd();
00121
00122
00123
00124
00125 TH1F hElectronNumber("hElectronNumber", "Number of ElectronCandidates", 15, 0., 15.);
00126 TH1F hElectronNumberAfterAmb("hElectronNumberAfterAmb", "Number of ElectronCandidates after ambiguity resolving", 15, 0., 15.);
00127 TH1F hElectronNumberBeforeAfter("hElectronNumberBeforeAfter", "Number of ElectronCandidates before - after ambiguity resolving", 15, 0., 15.);
00128
00129
00130 TH1F hIsoNumberTracks("hIsoNumberTracks", "Number of tracks inside cone", 40, 0., 40.);
00131 TH1F hIsoPtTracks("hIsoPtTracks", "Pt summ of all tracks inside cone", 100, 0., 100.);
00132 TH1F hIsoNumberECinsideCone("hIsoNumberECinsideCone", "Number of e candidates inside cone", 10, 0., 10.);
00133 TH1F hIsoPtMax("hIsoPtMax", "Max pT of tracks inside cone", 100, 0., 100.);
00134
00135 TH1F hIsoRegionNumberTracks("hIsoRegionNumberTracks", "Number of tracks inside region", 40, 0., 40.);
00136 TH1F hIsoRegionPtTracks("hIsoRegionPtTracks", "Pt summ of all tracks inside region", 100, 0., 100.);
00137 TH1F hIsoRegionPtMax("hIsoRegionPtMax", "Max pT of tracks inside region", 100, 0., 100.);
00138
00139
00140 TH1F hElectronRecGenPt("hElectronRecGenPt","ElectronCandidate: Rec/Gen pT", 500, 0., 5.);
00141 TH1F hElectronRecGenDr("hElectronRecGenDr","ElectronCandidate: Rec/Gen Delta R", 500, 0., 5.);
00142
00143
00144 TH1F hElectronClasses("hElectronClasses","Electron Candidates Classification",23, -2., 21.);
00145 TH1F hElectronClass0("hElectronClass0","Electron Candidates Class: 0, Barrel-Golden",100, 0., 1.5);
00146 TH1F hElectronClass1("hElectronClass1","Electron Candidates Class: 1, Barrel-Big Brem",100, 0., 1.5);
00147 TH1F hElectronClass2("hElectronClass2","Electron Candidates Class: 2, Barrel-Narrow",100, 0., 1.5);
00148 TH1F hElectronClass3("hElectronClass3","Electron Candidates Class: 3, Barrel-Showering",100, 0., 1.5);
00149 TH1F hElectronClass4("hElectronClass4","Electron Candidates Class: 4, Barrel-Cracks",100, 0., 1.5);
00150 TH1F hElectronClass10("hElectronClass10","Electron Candidates Class: 0, Endcap-Golden",100, 0., 1.5);
00151 TH1F hElectronClass11("hElectronClass11","Electron Candidates Class: 1, Endcap-Big Brem",100, 0., 1.5);
00152 TH1F hElectronClass12("hElectronClass12","Electron Candidates Class: 2, Endcap-Narrow",100, 0., 1.5);
00153 TH1F hElectronClass13("hElectronClass13","Electron Candidates Class: 3, Endcap-Showering",100, 0., 1.5);
00154
00155 TProfile hElectronClassProfile0("hElectronClassProfile0","Electron Candidates ClassProfile: 0, Barrel-Golden",100, 0., 2.7);
00156 TProfile hElectronClassProfile1("hElectronClassProfile1","Electron Candidates ClassProfile: 1, Barrel-Big Brem",100, 0., 2.7);
00157 TProfile hElectronClassProfile2("hElectronClassProfile2","Electron Candidates ClassProfile: 2, Barrel-Narrow",100, 0., 2.7);
00158 TProfile hElectronClassProfile3("hElectronClassProfile3","Electron Candidates ClassProfile: 3, Barrel-Showering",100, 0., 2.7);
00159 TProfile hElectronClassProfile4("hElectronClassProfile4","Electron Candidates ClassProfile: 4, Barrel-Cracks",100, 0., 2.7);
00160 TProfile hElectronClassProfile10("hElectronClassProfile10","Electron Candidates ClassProfile: 0, Endcap-Golden",100, 0., 2.7);
00161 TProfile hElectronClassProfile11("hElectronClassProfile11","Electron Candidates ClassProfile: 1, Endcap-Big Brem",100, 0., 2.7);
00162 TProfile hElectronClassProfile12("hElectronClassProfile12","Electron Candidates ClassProfile: 2, Endcap-Narrow",100, 0., 2.7);
00163 TProfile hElectronClassProfile13("hElectronClassProfile13","Electron Candidates ClassProfile: 3, Endcap-Showering",100, 0., 2.7);
00164
00165 TH1F hElectronEta("hElectronEta","Electron Candidates Eta",100, 0., 2.7);
00166 TH1F hElectronEtaClass0("hElectronEtaClass0","Electron Candidates Eta Class: 0, Barrel-Golden",100, 0., 2.7);
00167 TH1F hElectronEtaClass1("hElectronEtaClass1","Electron Candidates Eta Class: 1, Barrel-Big Brem",100, 0., 2.7);
00168 TH1F hElectronEtaClass2("hElectronEtaClass2","Electron Candidates Eta Class: 2, Barrel-Narrow",100, 0., 2.7);
00169 TH1F hElectronEtaClass3("hElectronEtaClass3","Electron Candidates Eta Class: 3, Barrel-Showering",100, 0., 2.7);
00170 TH1F hElectronEtaClass4("hElectronEtaClass4","Electron Candidates Eta Class: 4, Barrel-Cracks",100, 0., 2.7);
00171 TH1F hElectronEtaClass10("hElectronEtaClass10","Electron Candidates Eta Class: 0, Endcap-Golden",100, 0., 2.7);
00172 TH1F hElectronEtaClass11("hElectronEtaClass11","Electron Candidates Eta Class: 1, Endcap-Big Brem",100, 0., 2.7);
00173 TH1F hElectronEtaClass12("hElectronEtaClass12","Electron Candidates Eta Class: 2, Endcap-Narrow",100, 0., 2.7);
00174 TH1F hElectronEtaClass13("hElectronEtaClass13","Electron Candidates Eta Class: 3, Endcap-Showering",100, 0., 2.7);
00175
00176
00177 TH1F hElectronClassCorr0("hElectronClassCorr0","Electron Candidates Class After Corr: 0, Barrel-Golden",100, 0., 1.5);
00178 TH1F hElectronClassCorr1("hElectronClassCorr1","Electron Candidates Class After Corr: 1, Barrel-Big Brem",100, 0., 1.5);
00179 TH1F hElectronClassCorr2("hElectronClassCorr2","Electron Candidates Class After Corr: 2, Barrel-Narrow",100, 0., 1.5);
00180 TH1F hElectronClassCorr3("hElectronClassCorr3","Electron Candidates Class After Corr: 3, Barrel-Showering",100, 0., 1.5);
00181 TH1F hElectronClassCorr4("hElectronClassCorr4","Electron Candidates Class After Corr: 4, Barrel-Cracks",100, 0., 1.5);
00182 TH1F hElectronClassCorr10("hElectronClassCorr10","Electron Candidates Class After Corr: 0, Endcap-Golden",100, 0., 1.5);
00183 TH1F hElectronClassCorr11("hElectronClassCorr11","Electron Candidates Class After Corr: 1, Endcap-Big Brem",100, 0., 1.5);
00184 TH1F hElectronClassCorr12("hElectronClassCorr12","Electron Candidates Class After Corr: 2, Endcap-Narrow",100, 0., 1.5);
00185 TH1F hElectronClassCorr13("hElectronClassCorr13","Electron Candidates Class After Corr: 3, Endcap-Showering",100, 0., 1.5);
00186
00187 TProfile hElectronClassProfileCorr0("hElectronClassProfileCorr0","Electron Candidates ClassProfileCorr: 0, Barrel-Golden",100, 0., 2.7);
00188 TProfile hElectronClassProfileCorr1("hElectronClassProfileCorr1","Electron Candidates ClassProfileCorr: 1, Barrel-Big Brem",100, 0., 2.7);
00189 TProfile hElectronClassProfileCorr2("hElectronClassProfileCorr2","Electron Candidates ClassProfileCorr: 2, Barrel-Narrow",100, 0., 2.7);
00190 TProfile hElectronClassProfileCorr3("hElectronClassProfileCorr3","Electron Candidates ClassProfileCorr: 3, Barrel-Showering",100, 0., 2.7);
00191 TProfile hElectronClassProfileCorr4("hElectronClassProfileCorr4","Electron Candidates ClassProfileCorr: 4, Barrel-Cracks",100, 0., 2.7);
00192 TProfile hElectronClassProfileCorr10("hElectronClassProfileCorr10","Electron Candidates ClassProfileCorr: 0, Endcap-Golden",100, 0., 2.7);
00193 TProfile hElectronClassProfileCorr11("hElectronClassProfileCorr11","Electron Candidates ClassProfileCorr: 1, Endcap-Big Brem",100, 0., 2.7);
00194 TProfile hElectronClassProfileCorr12("hElectronClassProfileCorr12","Electron Candidates ClassProfileCorr: 2, Endcap-Narrow",100, 0., 2.7);
00195 TProfile hElectronClassProfileCorr13("hElectronClassProfileCorr13","Electron Candidates ClassProfileCorr: 3, Endcap-Showering",100, 0., 2.7);
00196
00197
00198
00199 TH1F hElectronMomentumEOverP("hElectronMomentumEOverP","E/p",200,0.,2.);
00200 TH1F hElectronMomentumEnergy("hElectronMomentumEnergy","E/Etrue",200,0.,2.);
00201 TH1F hElectronMomentumTrack("hElectronMomentumTrack","p/Etrue",200,0.,2.);
00202 TH1F hElectronMomentumFinal("hElectronMomentumFinal","Efinal/Etrue",200,0.,2.);
00203
00204 TH2F hElectronMomentumEnergy2("hElectronMomentumEnergy2","E/Etrue vs E/p",200,0.,2.,200,0.,2.);
00205 TH2F hElectronMomentumTrack2("hElectronMomentumTrack2","p/Etrue vs E/p",200,0.,2.,200,0.,2.5);
00206 TH2F hElectronMomentumFinal2("hElectronMomentumFinal2","Efinal/Etrue vs E/p",200,0.,2.,200,0.,2.);
00207
00208
00209 TH1F hRealZMass("hRealZMass","Higgs: Real Z mass", 150, 0., 150.);
00210 TH1F hVirtualZMass("hVirtualZMass","Higgs: Virtual Z mass", 150, 0., 150.);
00211 TH1F hHiggsMass("hHiggsMass","Higgs: Higgs mass", 180, 0., 180.);
00212 TH1F hElectronPt("hElectronPt","XANASelectHZZ: Electron pT", 100, 0., 100.);
00213 TH1F hElectronRecGenPtHiggs("hElectronRecGenPtHiggs","ElectronCandidate for Higgs: Rec/Gen pT", 500, 0., 5.);
00214 TH1F hElectronRecGenDrHiggs("hElectronRecGenDrHiggs","ElectronCandidate for Higgs: Rec/Gen Delta R", 500, 0., 5.);
00215
00216 TH1F hRealZMassCuts("hRealZMassCuts","Higgs: Real Z mass, after cuts", 150, 0., 150.);
00217 TH1F hVirtualZMassCuts("hVirtualZMassCuts","Higgs: Virtual Z mass, after cuts", 150, 0., 150.);
00218 TH1F hHiggsMassCuts("hHiggsMassCuts","Higgs: Higgs mass, after cuts", 180, 0., 180.);
00219 TH1F hElectronPtCuts("hElectronPtCuts","XANASelectHZZ: Electron pT, after cuts", 100, 0., 100.);
00220 TH1F hElectronRecGenPtHiggsCuts("hElectronRecGenPtHiggsCuts","ElectronCandidate for Higgs: Rec/Gen pT, after cuts", 500, 0., 5.);
00221 TH1F hElectronRecGenDrHiggsCuts("hElectronRecGenDrHiggsCuts","ElectronCandidate for Higgs: Rec/Gen Delta R, after cuts", 500, 0., 5.);
00222
00223 TH1F hElectronRecGenPtHiggsOrig("hElectronRecGenPtHiggsOrig","ElectronCandidate for Higgs: Rec/Gen (Original) pT", 500, 0., 5.);
00224 TH1F hElectronRecGenDrHiggsOrig("hElectronRecGenDrHiggsOrig","ElectronCandidate for Higgs: Rec/Gen (Original) Delta R", 500, 0., 5.);
00225 TH1F hElectronRecGenPtHiggsOrigAftPh("hElectronRecGenPtHiggsOrigAftPh","ElectronCandidate for Higgs: Rec/Gen (Original) pT, After Photos", 500, 0., 5.);
00226 TH1F hElectronRecGenDrHiggsOrigAftPh("hElectronRecGenDrHiggsOrigAftPh","ElectronCandidate for Higgs: Rec/Gen (Original) Delta R, After Photos", 500, 0., 5.);
00227
00228 TH1F hElectronPhotosAftBefPt("hElectronPhotosAftBefPt","Photos: After/Before pT", 200, 0., 2.);
00229 TH1F hElectronPhotosAftBefE("hElectronPhotosAftBefE","Photos: After/Before E", 200, 0., 2.);
00230
00231 TH1F hRealZMassRecoOrig("hRealZMassRecoOrig","Higgs: Real Z mass (Reconstructed/Original)", 200, 0., 2.);
00232 TH1F hVirtualZMassRecoOrig("hVirtualZMassRecoOrig","Higgs: Virtual Z mass (Reconstructed/Original)", 200, 0., 2.);
00233 TH1F hHiggsMassRecoOrig("hHiggsMassRecoOrig","Higgs: Higgs mass (Reconstructed/Original)", 200, 0., 2.);
00234
00235
00236
00237 TH1F hElectronClassesHiggs("hElectronClassesHiggs","Electron Candidates from Higgs - Classification",23, -2., 21.);
00238
00239 TH1F hElectronClass0Higgs("hElectronClass0Higgs","Electron Candidates from Higgs Class: 0, Barrel-Golden",100, 0., 1.5);
00240 TH1F hElectronClass1Higgs("hElectronClass1Higgs","Electron Candidates from Higgs Class: 1, Barrel-Big Brem",100, 0., 1.5);
00241 TH1F hElectronClass2Higgs("hElectronClass2Higgs","Electron Candidates from Higgs Class: 2, Barrel-Narrow",100, 0., 1.5);
00242 TH1F hElectronClass3Higgs("hElectronClass3Higgs","Electron Candidates from Higgs Class: 3, Barrel-Showering",100, 0., 1.5);
00243 TH1F hElectronClass4Higgs("hElectronClass4Higgs","Electron Candidates from Higgs Class: 4, Barrel-Cracks",100, 0., 1.5);
00244 TH1F hElectronClass10Higgs("hElectronClass10Higgs","Electron Candidates from Higgs Class: 0, Endcap-Golden",100, 0., 1.5);
00245 TH1F hElectronClass11Higgs("hElectronClass11Higgs","Electron Candidates from Higgs Class: 1, Endcap-Big Brem",100, 0., 1.5);
00246 TH1F hElectronClass12Higgs("hElectronClass12Higgs","Electron Candidates from Higgs Class: 2, Endcap-Narrow",100, 0., 1.5);
00247 TH1F hElectronClass13Higgs("hElectronClass13Higgs","Electron Candidates from Higgs Class: 3, Endcap-Showering",100, 0., 1.5);
00248
00249 TProfile hElectronClassProfile0Higgs("hElectronClassProfile0Higgs","Electron Candidates from Higgs ClassProfile: 0, Barrel-Golden",100, 0., 2.7);
00250 TProfile hElectronClassProfile1Higgs("hElectronClassProfile1Higgs","Electron Candidates from Higgs ClassProfile: 1, Barrel-Big Brem",100, 0., 2.7);
00251 TProfile hElectronClassProfile2Higgs("hElectronClassProfile2Higgs","Electron Candidates from Higgs ClassProfile: 2, Barrel-Narrow",100, 0., 2.7);
00252 TProfile hElectronClassProfile3Higgs("hElectronClassProfile3Higgs","Electron Candidates from Higgs ClassProfile: 3, Barrel-Showering",100, 0., 2.7);
00253 TProfile hElectronClassProfile4Higgs("hElectronClassProfile4Higgs","Electron Candidates from Higgs ClassProfile: 4, Barrel-Cracks",100, 0., 2.7);
00254 TProfile hElectronClassProfile10Higgs("hElectronClassProfile10Higgs","Electron Candidates from Higgs ClassProfile: 0, Endcap-Golden",100, 0., 2.7);
00255 TProfile hElectronClassProfile11Higgs("hElectronClassProfile11Higgs","Electron Candidates from Higgs ClassProfile: 1, Endcap-Big Brem",100, 0., 2.7);
00256 TProfile hElectronClassProfile12Higgs("hElectronClassProfile12Higgs","Electron Candidates from Higgs ClassProfile: 2, Endcap-Narrow",100, 0., 2.7);
00257 TProfile hElectronClassProfile13Higgs("hElectronClassProfile13Higgs","Electron Candidates from Higgs ClassProfile: 3, Endcap-Showering",100, 0., 2.7);
00258
00259 TH1F hElectronEtaHiggs("hElectronEtaHiggs","Electron Candidates from Higgs Eta",100, 0., 2.7);
00260 TH1F hElectronEtaClass0Higgs("hElectronEtaClass0Higgs","Electron Candidates from Higgs Eta Class: 0, Barrel-Golden",100, 0., 2.7);
00261 TH1F hElectronEtaClass1Higgs("hElectronEtaClass1Higgs","Electron Candidates from Higgs Eta Class: 1, Barrel-Big Brem",100, 0., 2.7);
00262 TH1F hElectronEtaClass2Higgs("hElectronEtaClass2Higgs","Electron Candidates from Higgs Eta Class: 2, Barrel-Narrow",100, 0., 2.7);
00263 TH1F hElectronEtaClass3Higgs("hElectronEtaClass3Higgs","Electron Candidates from Higgs Eta Class: 3, Barrel-Showering",100, 0., 2.7);
00264 TH1F hElectronEtaClass4Higgs("hElectronEtaClass4Higgs","Electron Candidates from Higgs Eta Class: 4, Barrel-Cracks",100, 0., 2.7);
00265 TH1F hElectronEtaClass10Higgs("hElectronEtaClass10Higgs","Electron Candidates from Higgs Eta Class: 0, Endcap-Golden",100, 0., 2.7);
00266 TH1F hElectronEtaClass11Higgs("hElectronEtaClass11Higgs","Electron Candidates from Higgs Eta Class: 1, Endcap-Big Brem",100, 0., 2.7);
00267 TH1F hElectronEtaClass12Higgs("hElectronEtaClass12Higgs","Electron Candidates from Higgs Eta Class: 2, Endcap-Narrow",100, 0., 2.7);
00268 TH1F hElectronEtaClass13Higgs("hElectronEtaClass13Higgs","Electron Candidates from Higgs Eta Class: 3, Endcap-Showering",100, 0., 2.7);
00269
00270 TH1F hElectronMomentumEOverPHiggs("hElectronMomentumEOverPHiggs","Electron Candidates from Higgs - E/p",200,0.,2.);
00271 TH1F hElectronMomentumEnergyHiggs("hElectronMomentumEnergyHiggs","Electron Candidates from Higgs - E/Etrue",200,0.,2.);
00272 TH1F hElectronMomentumTrackHiggs("hElectronMomentumTrackHiggs","Electron Candidates from Higgs - p/Etrue",200,0.,2.);
00273 TH1F hElectronMomentumFinalHiggs("hElectronMomentumFinalHiggs","Electron Candidates from Higgs - Efinal/Etrue",200,0.,2.);
00274
00275 TH2F hElectronMomentumEnergy2Higgs("hElectronMomentumEnergy2Higgs","Electron Candidates from Higgs - E/Etrue vs E/p",200,0.,2.,200,0.,2.);
00276 TH2F hElectronMomentumTrack2Higgs("hElectronMomentumTrack2Higgs","Electron Candidates from Higgs - p/Etrue vs E/p",200,0.,2.,200,0.,2.5);
00277 TH2F hElectronMomentumFinal2Higgs("hElectronMomentumFinal2Higgs","Electron Candidates from Higgs - Efinal/Etrue vs E/p",200,0.,2.,200,0.,2.);
00278
00279
00280 Int_t nb = 0;
00281 Int_t nevent = 0, ievent = 0;
00282 int ne = 0, nTrigAccL1=0, nTrigAccHLT=0, nTrigAccHLTelec=0,nPresAcc = 0, nIsoAcc = 0, nAmbBef = 0, nAmbAft = 0, n2e2pAcc = 0;
00283 int nCutsIso = 0, nCutsPt = 0, nCutsRealZMass = 0, nCutsVirtualZMass = 0, nCutsHiggsMass = 0;
00284 int mc4e = 0, mc4t = 0, mc2e2t = 0, mc4eCuts = 0, mc4tCuts = 0, mc2e2tCuts = 0;
00285 int nconsidered=0,niso=0;
00286 TObjArray *electrons = 0, *superClusters = 0;
00287 TObjArray *tracks=0;
00288 HepLorentzVector realZ, virtualZ, higgs, realZOrig, virtualZOrig, higgsOrig;
00289 HepLorentzVector tmpElRec, tmpElGen, tmpElGenOrigB, tmpElGenOrigA;
00290 XANAElectronCandidate *tmpElectronCandidate;
00291
00292
00293 XANAEsdEvent *event = new XANAEsdEvent();
00294 XANAGeneratorEvent *generatorEvent = new XANAGeneratorEvent();
00295 XANAGeantEvent *geantEvent = new XANAGeantEvent();
00296
00297
00298 Short_t numberOfFiles = 0;
00299 TChain *T=new TChain("ESD");
00300 char tmp[512];
00301
00302
00303
00304 if (strcmp(argv[1], "hzz150") == 0) {
00305 cout<<"hzz4e 150"<<endl;
00306 numberOfFiles = 18;
00307 for (Int_t m_fi = 0; m_fi < numberOfFiles ; m_fi++) {
00308 sprintf(tmp,"/sps/cms/baffioni/XanadooTrees/hg03_hzz_4e_150_XANA_153_pix/hg03_hzz_4e_150.root.%03d",m_fi);
00309 TFile F(tmp);
00310 if (!(F.GetNkeys())) { continue; }
00311 T->Add(tmp);
00312 }
00313 }
00314 else if (strcmp(argv[1], "hzz120") == 0) {
00315 cout<<"hzz4e 120"<<endl;
00316 numberOfFiles = 20;
00317 for (Int_t m_fi = 0; m_fi < numberOfFiles ; m_fi++) {
00318 sprintf(tmp,"/sps/cms/baffioni/XanadooTrees/hg03_hzz_4e_120_XANA_153_pix/hg03_hzz_4e_120.root.%03d",m_fi);
00319 TFile F(tmp);
00320 if (!(F.GetNkeys())) { continue; }
00321 T->Add(tmp);
00322 }
00323 }
00324 else if(strcmp(argv[1], "tt4e") == 0){
00325 cout<<"ttbar->4e"<<endl;
00326 numberOfFiles = 160;
00327 for (Int_t m_fi = 0; m_fi < numberOfFiles ; m_fi++) {
00328 if (m_fi == 59 || m_fi == 106 ||m_fi == 158 || m_fi == 159 || m_fi == 149 || m_fi == 19|| m_fi == 31) {continue;}
00329 sprintf(tmp,"/sps/cms/baffioni/XanadooTrees/eg03_tt_4e_XANA_153_pix/eg03_tt_4e.root.%03d",m_fi);
00330 TFile F(tmp);
00331 if (!(F.GetNkeys())) {continue; }
00332 T->Add(tmp);
00333 }
00334 }
00335 else{
00336 cout << "no such data yet"<<endl;
00337 return 0;
00338 }
00339
00340
00341 initSettings(T, &event, &generatorEvent, &geantEvent);
00342
00343
00344
00345
00346
00347
00348 nevent = (Int_t)T->GetEntries();
00349 cout << "================== Total number of events: " << nevent << " ================" << endl;
00350
00351
00352 for (Int_t i=0; i<100; i++) {
00353 nb += T->GetEntry(i);
00354 ievent++;
00355
00356 if (i%100 == 0) cout << "================ Event: " << i << " ================" << endl;
00357
00358
00359 ne = event->getNumberOfElectronCandidates(); electrons = event->getElectronCandidates();
00360 tracks= event->getTracks();
00361 hElectronNumber.Fill((Axis_t) ne);
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378 superClusters = event->getSuperClusters();
00379
00380 for (int i3 = 0; i3 < ne; i3++) {
00381 tmpElectronCandidate = (XANAElectronCandidate *) electrons->At(i3);
00382
00383
00384 for (int isc = 0 ; isc < superClusters->GetLast() + 1; isc ++) {
00385 XANASuperCluster * sc = (XANASuperCluster *) superClusters->At(isc);
00386 if (tmpElectronCandidate->getSuperCluster()==0 &&
00387 tmpElectronCandidate->getSuperClusterPosition() == sc->getPosition()) {
00388 cout<<" !!! entering the super cluster bug correction "<<endl;
00389 cout<<" !!! should not be the case if data >= XANA1_5_3 are used"<<endl;
00390
00391
00392
00393 float oldEnergy = tmpElectronCandidate->getSuperClusterEnergy();
00394 tmpElectronCandidate->setSuperClusterEnergy(sc->getEnergy());
00395
00396 tmpElectronCandidate->setSuperCluster(sc);
00397
00398 Hep3Vector ptrack;
00399 if (tmpElectronCandidate->getElectronTrack()->getAlgoName() == "GSF") {
00400 XANAElectronGSFTrack *gsfetr = (XANAElectronGSFTrack *)(tmpElectronCandidate->getElectronTrack());
00401 ptrack = gsfetr->getGSFMomentumAtVertexMode();
00402 } else {
00403 ptrack = tmpElectronCandidate->getElectronTrack()->getMomentumAtVertex();
00404 }
00405 HepLorentzVector momentum(ptrack.x(), ptrack.y(), ptrack.z(), 0.);
00406 momentum *= sc->getEnergy() / ptrack.mag();
00407 momentum.setE(sc->getEnergy());
00408
00409 tmpElectronCandidate->setMomentumAtVertex(momentum);
00410
00411
00412 tmpElectronCandidate->setMomentumAtVertex(momentum);
00413 tmpElectronCandidate->setESuperClusterOverP(sc->getEnergy()/ptrack.mag());
00414
00415
00416 tmpElectronCandidate->setHadronicOverEm(sc->getHadronicOverEm()*oldEnergy/sc->getEnergy());
00417 }
00418 }
00419 }
00420
00421
00422
00423
00424
00425
00426 if (!egammaEscaleCorrection) {
00427
00428 for (int i3 = 0; i3 < ne; i3++) {
00429 tmpElectronCandidate = (XANAElectronCandidate *) electrons->At(i3);
00430
00431 float newEnergy = tmpElectronCandidate->getSuperCluster()->getEnergy()/
00432 tmpElectronCandidate->getSuperCluster()->getEnergyScaleFactor();
00433 HepLorentzVector oldMomentum = tmpElectronCandidate->getMomentumAtVertex();
00434 HepLorentzVector newMomentum(oldMomentum.x()*newEnergy/oldMomentum.t(),
00435 oldMomentum.y()*newEnergy/oldMomentum.t(),
00436 oldMomentum.z()*newEnergy/oldMomentum.t(),
00437 newEnergy);
00438 tmpElectronCandidate->setMomentumAtVertex(newMomentum);
00439 }
00440 }
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451 bool issignal=false;
00452 XANASelectMcHZZ selectorMc(generatorEvent);
00453
00454
00455 if (strcmp(argv[1], "hzz150") == 0 || strcmp(argv[1], "hzz120") == 0) {
00456 issignal=true;
00457
00458 if (selectorMc.isFourElectrons()) mc4e++;
00459 if (selectorMc.isFourTaus()) mc4t++;
00460 if (selectorMc.isTwoElectronsTwoTaus()) mc2e2t++;
00461
00462 if (!selectorMc.isFourElectrons()) {clean(event, generatorEvent, geantEvent);continue;}
00463 }
00464 nconsidered++;
00465
00466
00467
00469
00471
00472
00473 XANATriggerInfo triggerInfo = event->getTriggerInfo();
00474 XANAnalysisTrigger trigger(&triggerInfo);
00475
00476 if (trigger.getL1Decision() == true) nTrigAccL1++;
00477 else {clean(event, generatorEvent, geantEvent);continue; }
00478
00479 if (trigger.getHLTDecision() == true) nTrigAccHLT++;
00480 else {clean(event, generatorEvent, geantEvent);continue; }
00481
00482 if (trigger.getHLTElecDecision() == true) nTrigAccHLTelec++;
00483 else {clean(event, generatorEvent, geantEvent);continue; }
00484
00485
00486
00488
00490
00491
00492
00493
00494
00495
00496 XANAEventSelect eventSelect(event);
00497 vector<float> ptCut;
00498 ptCut.push_back(3.);
00499 ptCut.push_back(3.);
00500 if ((eventSelect.NumberOfElCandSelect( 2, -1, 0, ptCut)) &&
00501 (eventSelect.NumberOfElCandSelect( 2, 1, 0, ptCut))) {
00502 nPresAcc++;
00503 } else {clean(event, generatorEvent, geantEvent);continue;}
00504
00505
00506
00507
00508
00509
00510
00511 XANAEvtIsolation isolation(event);
00512 std::vector<XANAIsolation> isolationVector = isolation.getIsolationVector();
00513 std::vector<XANAIsolation>::const_iterator isoIter;
00514
00515
00516 for (isoIter = isolationVector.begin(); isoIter != isolationVector.end(); isoIter++){
00517 hIsoNumberTracks.Fill((Axis_t) isoIter->getNumberTracks());
00518 hIsoPtTracks.Fill((Axis_t) isoIter->getPtTracks());
00519 hIsoNumberECinsideCone.Fill((Axis_t) isoIter->getNumberECinsideCone());
00520 hIsoPtMax.Fill((Axis_t) isoIter->getPtMax());
00521 }
00522
00523
00524
00525 if (isolation.getIsolationPtSum(10.,4)) nIsoAcc++;
00526 else {clean(event, generatorEvent, geantEvent);continue;}
00527
00528
00529
00530
00531
00532
00533
00534
00536
00538
00539
00540
00541 XANAElectronRecGen anaMcEvent(event,generatorEvent);
00542 map<XANAElectronCandidate *, XANAGeneratorParticle *> electronsRecGen = anaMcEvent.getElectronsRecGen();
00543 map<XANAElectronCandidate *, XANAGeneratorParticle *>::const_iterator iterEleRecGen;
00544
00545 for (iterEleRecGen = electronsRecGen.begin(); iterEleRecGen != electronsRecGen.end(); iterEleRecGen++){
00546 tmpElRec = (iterEleRecGen->first)->getMomentumAtVertex();
00547 tmpElGen = (iterEleRecGen->second)->getMomentum();
00548 hElectronRecGenPt.Fill(tmpElRec.perp()/tmpElGen.perp());
00549 hElectronRecGenDr.Fill(tmpElRec.deltaR(tmpElGen));
00550 }
00551
00552
00553
00554
00556
00558
00559
00560 XANAElectronSelect electronSelector(electrons);
00561 electronSelector.ElSelect_dphi(0.1);
00562 TObjArray *selectedElectrons = electronSelector.getSelectedElectrons();
00563
00564
00565
00567
00569
00570
00571
00572 XANAmbiguityResolve ambResolve(selectedElectrons,selectedElectrons->GetLast() + 1);
00573 ambResolve.ResolveByEoverP();
00574
00575
00576
00577
00578
00579
00580
00581
00582
00583
00584 nAmbBef+=ne;
00585 nAmbAft+=ambResolve.getResolvedElcands()->GetLast()+1;
00586
00587 hElectronNumberAfterAmb.Fill((Axis_t) ambResolve.getResolvedElcands()->GetLast() + 1);
00588 hElectronNumberBeforeAfter.Fill((Axis_t) ne - ambResolve.getResolvedElcands()->GetLast() - 1);
00589
00590
00591
00592
00594
00596
00597
00598 XANAElectronClassification electronClasses(ambResolve.getResolvedElcands());
00599 map<XANAElectronCandidate *, int> elClassMap = electronClasses.getElectronClass();
00600 map<XANAElectronCandidate *, int>::const_iterator elClassMapIter;
00601 float uncorrEnergy = 0;
00602
00603
00604
00605 for (elClassMapIter = elClassMap.begin(); elClassMapIter != elClassMap.end(); elClassMapIter++) {
00606
00607 hElectronClasses.Fill((Axis_t) elClassMapIter->second);
00608 tmpElectronCandidate = elClassMapIter->first;
00609 float myEta = tmpElectronCandidate->getSuperClusterPosition().eta();
00610 uncorrEnergy = tmpElectronCandidate->getSuperClusterEnergy();
00611 if (elClassMapIter->second >= 0 && elClassMapIter->second < 5 && tmpElectronCandidate->getSuperCluster())
00612 uncorrEnergy = uncorrEnergy/tmpElectronCandidate->getSuperCluster()->getEnergyScaleFactor();
00613 tmpElGen = ((electronsRecGen.find(tmpElectronCandidate))->second)->getMomentum();
00614 Axis_t ratio = uncorrEnergy/tmpElGen.e();
00615 hElectronEta.Fill(myEta);
00616 if (elClassMapIter->second == 0) {
00617 hElectronClass0.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile0.Fill(myEta, ratio);
00618 hElectronEtaClass0.Fill(myEta);
00619 }
00620 else if (elClassMapIter->second == 1) {
00621 hElectronClass1.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile1.Fill(myEta, ratio);
00622 hElectronEtaClass1.Fill(myEta);
00623 }
00624 else if (elClassMapIter->second == 2) {
00625 hElectronClass2.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile2.Fill(myEta, ratio);
00626 hElectronEtaClass2.Fill(myEta);
00627 }
00628 else if (elClassMapIter->second == 3) {
00629 hElectronClass3.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile3.Fill(myEta, ratio);
00630 hElectronEtaClass3.Fill(myEta);
00631 }
00632 else if (elClassMapIter->second == 4) {
00633 hElectronClass4.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile4.Fill(myEta, ratio);
00634 hElectronEtaClass4.Fill(myEta);
00635 }
00636 else if (elClassMapIter->second == 10) {
00637 hElectronClass10.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile10.Fill(myEta, ratio);
00638 hElectronEtaClass10.Fill(myEta);
00639 }
00640 else if (elClassMapIter->second == 11) {
00641 hElectronClass11.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile11.Fill(myEta, ratio);
00642 hElectronEtaClass11.Fill(myEta);
00643 }
00644 else if (elClassMapIter->second == 12) {
00645 hElectronClass12.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile12.Fill(myEta, ratio);
00646 hElectronEtaClass12.Fill(myEta);
00647 }
00648 else if (elClassMapIter->second == 13) {
00649 hElectronClass13.Fill(ratio); if (ratio > 0.8 && ratio < 2.)hElectronClassProfile13.Fill(myEta, ratio);
00650 hElectronEtaClass13.Fill(myEta);
00651 }
00652 }
00653
00654
00655
00656
00658
00660
00661 float corrEnergy;
00662
00663 if (federicoEscaleCorrection) {
00664
00665 XANAElectronCorrection electronCorrection(elClassMap);
00666 corrEnergy = 0.;
00667
00668
00669
00670 for (elClassMapIter = elClassMap.begin(); elClassMapIter != elClassMap.end(); elClassMapIter++) {
00671 tmpElectronCandidate = elClassMapIter->first;
00672 float myEta = tmpElectronCandidate->getSuperClusterPosition().eta();
00673 tmpElGen = ((electronsRecGen.find(tmpElectronCandidate))->second)->getMomentum();
00674 corrEnergy = tmpElectronCandidate->getSuperClusterEnergy();
00675 Axis_t ratio = corrEnergy/tmpElGen.e();
00676 if (elClassMapIter->second == 0) { hElectronClassCorr0.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfileCorr0.Fill(myEta, ratio); }
00677 else if (elClassMapIter->second == 1) { hElectronClassCorr1.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfileCorr1.Fill(myEta, ratio); }
00678 else if (elClassMapIter->second == 2) { hElectronClassCorr2.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfileCorr2.Fill(myEta, ratio); }
00679 else if (elClassMapIter->second == 3) { hElectronClassCorr3.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfileCorr3.Fill(myEta, ratio); }
00680 else if (elClassMapIter->second == 4) { hElectronClassCorr4.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfileCorr4.Fill(myEta, ratio); }
00681 else if (elClassMapIter->second == 10) { hElectronClassCorr10.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfileCorr10.Fill(myEta, ratio); }
00682 else if (elClassMapIter->second == 11) { hElectronClassCorr11.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfileCorr11.Fill(myEta, ratio); }
00683 else if (elClassMapIter->second == 12) { hElectronClassCorr12.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfileCorr12.Fill(myEta, ratio); }
00684 else if (elClassMapIter->second == 13) { hElectronClassCorr13.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfileCorr13.Fill(myEta, ratio); }
00685 }
00686
00687 }
00688
00689
00690
00692
00694 if (momentumCorrection) {
00695
00696 XANAElectronMomentum electronMomentum(elClassMap);
00697
00698
00699 for (elClassMapIter = elClassMap.begin(); elClassMapIter != elClassMap.end(); elClassMapIter++) {
00700 tmpElectronCandidate = elClassMapIter->first;
00701 XANAElectronGSFTrack *gsfTrack = (XANAElectronGSFTrack *) tmpElectronCandidate->getElectronTrack();
00702 HepVector3D tmpTrackRec = gsfTrack->getGSFMomentumAtVertexMode();
00703 tmpElGen = ((electronsRecGen.find(tmpElectronCandidate))->second)->getMomentum();
00704 Axis_t eOverP = tmpElectronCandidate->getSuperClusterEnergy()/tmpTrackRec.mag();
00705 Axis_t eOverETrue = tmpElectronCandidate->getSuperClusterEnergy()/tmpElGen.t();
00706 Axis_t pOverETrue = tmpTrackRec.mag()/tmpElGen.t();
00707 HepLorentzVector final = tmpElectronCandidate->getMomentumAtVertex();
00708 Axis_t finalOverETrue = final.t()/tmpElGen.t();
00709
00710 hElectronMomentumEOverP.Fill(eOverP);
00711 hElectronMomentumEnergy.Fill(eOverETrue); hElectronMomentumEnergy2.Fill(eOverP, eOverETrue);
00712 hElectronMomentumTrack.Fill(pOverETrue); hElectronMomentumTrack2.Fill(eOverP, pOverETrue);
00713 hElectronMomentumFinal.Fill(finalOverETrue); hElectronMomentumFinal2.Fill(eOverP, finalOverETrue);
00714 }
00715
00716 }
00717
00718
00719
00721
00723
00724
00725
00726
00727
00728 XANAEventSelect eventSelect2(ambResolve.getResolvedElcands(),tracks);
00729 vector<float> ptCut2;
00730 ptCut2.push_back(5.);
00731 ptCut2.push_back(5.);
00732
00733 if ((eventSelect2.NumberOfElCandSelect( 2, -1, 1, ptCut2)) &&
00734 (eventSelect2.NumberOfElCandSelect( 2, 1, 1, ptCut2))) {
00735 niso++;
00736 } else {clean(event, generatorEvent, geantEvent);continue;}
00737 TObjArray * isoel=eventSelect2.getGoodElCands(0,1,5);
00738
00739
00740
00741
00742
00743 XANASelectHZZ selector(isoel,isoel->GetLast()+1);
00744
00745
00746 if (selector.isValid()) n2e2pAcc++;
00747 else {clean(event, generatorEvent, geantEvent);continue; }
00748
00749
00750 XANAElectronCandidate *electronsHiggs[4] = {selector.getElectronFromRealZ(),
00751 selector.getPositronFromRealZ(),
00752 selector.getElectronFromVirtualZ(),
00753 selector.getPositronFromVirtualZ()};
00754
00755
00756
00757 realZ = selector.getRealZ(); hRealZMass.Fill(realZ.m());
00758 virtualZ = selector.getVirtualZ(); hVirtualZMass.Fill(virtualZ.m());
00759 higgs = selector.getHiggs(); hHiggsMass.Fill(higgs.m());
00760
00761
00762
00763
00764 XANAGeneratorParticle *electronsHiggsOrig[4];
00765 XANAGeneratorParticle *electronsHiggsOrigAftPh[4];
00766 if(issignal){
00767
00768
00769 electronsHiggsOrig [0]= selectorMc.getElectronFromRealZ();
00770 electronsHiggsOrig [1]= selectorMc.getPositronFromRealZ();
00771 electronsHiggsOrig [2]= selectorMc.getElectronFromVirtualZ();
00772 electronsHiggsOrig [3]= selectorMc.getPositronFromVirtualZ() ;
00773
00774
00775 electronsHiggsOrigAftPh[0] = selectorMc.getElectronFromRealZAftPh();
00776 electronsHiggsOrigAftPh[1] = selectorMc.getPositronFromRealZAftPh();
00777 electronsHiggsOrigAftPh[2] = selectorMc.getElectronFromVirtualZAftPh();
00778 electronsHiggsOrigAftPh[3] = selectorMc.getPositronFromVirtualZAftPh() ;
00779
00780
00781 realZOrig = selectorMc.getRealZ()->getMomentum(); hRealZMassRecoOrig.Fill(realZ.m()/realZOrig.m());
00782 virtualZOrig = selectorMc.getVirtualZ()->getMomentum(); hVirtualZMassRecoOrig.Fill(virtualZ.m()/virtualZOrig.m());
00783 higgsOrig = selectorMc.getHiggs()->getMomentum(); hHiggsMassRecoOrig.Fill(higgs.m()/higgsOrig.m());
00784 }
00785
00786
00787
00788
00789 for (int ieh = 0; ieh < 4; ieh++){
00790 hElectronPt.Fill(electronsHiggs[ieh]->getPt());
00791 tmpElRec = electronsHiggs[ieh]->getMomentumAtVertex();
00792 tmpElGen = ((electronsRecGen.find(electronsHiggs[ieh]))->second)->getMomentum();
00793 hElectronRecGenPtHiggs.Fill(tmpElRec.perp()/tmpElGen.perp());
00794 hElectronRecGenDrHiggs.Fill(tmpElRec.deltaR(tmpElGen));
00795
00796 if (issignal && selectorMc.isFourElectrons()) {
00797 tmpElGenOrigB = electronsHiggsOrig[ieh]->getMomentum();
00798 hElectronRecGenPtHiggsOrig.Fill(tmpElRec.perp()/tmpElGenOrigB.perp());
00799 hElectronRecGenDrHiggsOrig.Fill(tmpElRec.deltaR(tmpElGenOrigB));
00800 tmpElGenOrigA = electronsHiggsOrigAftPh[ieh]->getMomentum();
00801
00802 hElectronRecGenPtHiggsOrigAftPh.Fill(tmpElRec.perp()/tmpElGenOrigA.perp());
00803 hElectronRecGenDrHiggsOrigAftPh.Fill(tmpElRec.deltaR(tmpElGenOrigA));
00804 hElectronPhotosAftBefPt.Fill(tmpElGenOrigA.perp()/tmpElGenOrigB.perp());
00805 hElectronPhotosAftBefE.Fill(tmpElGenOrigA.t()/tmpElGenOrigB.t());
00806
00807
00808 }
00809
00810
00811
00812 int elHiggsClass = (elClassMap.find(electronsHiggs[ieh]))->second;
00813 hElectronClassesHiggs.Fill((Axis_t) elHiggsClass);
00814
00815
00816 tmpElectronCandidate = electronsHiggs[ieh];
00817 XANAElectronGSFTrack *gsfTrack = (XANAElectronGSFTrack *) tmpElectronCandidate->getElectronTrack();
00818 HepVector3D tmpTrackRec = gsfTrack->getGSFMomentumAtVertexMode();
00819 Axis_t eOverP = tmpElectronCandidate->getSuperClusterEnergy()/tmpTrackRec.mag();
00820 Axis_t eOverETrue = tmpElectronCandidate->getSuperClusterEnergy()/tmpElGen.t();
00821 Axis_t pOverETrue = tmpTrackRec.mag()/tmpElGen.t();
00822 HepLorentzVector final = tmpElectronCandidate->getMomentumAtVertex();
00823
00824
00825
00826 Axis_t finalOverETrue = final.t()/tmpElGen.t();
00827
00828 hElectronMomentumEOverPHiggs.Fill(eOverP);
00829 hElectronMomentumEnergyHiggs.Fill(eOverETrue); hElectronMomentumEnergy2Higgs.Fill(eOverP, eOverETrue);
00830 hElectronMomentumTrackHiggs.Fill(pOverETrue); hElectronMomentumTrack2Higgs.Fill(eOverP, pOverETrue);
00831 hElectronMomentumFinalHiggs.Fill(finalOverETrue); hElectronMomentumFinal2Higgs.Fill(eOverP, finalOverETrue);
00832
00833
00834 int electronClass = (elClassMap.find(electronsHiggs[ieh]))->second;
00835 float myEta = electronsHiggs[ieh]->getSuperClusterPosition().eta();
00836 tmpElGen = ((electronsRecGen.find(electronsHiggs[ieh]))->second)->getMomentum();
00837 corrEnergy = electronsHiggs[ieh]->getSuperClusterEnergy();
00838 Axis_t ratio = corrEnergy/tmpElGen.e();
00839 hElectronEtaHiggs.Fill(myEta);
00840 if (electronClass == 0) {
00841 hElectronClass0Higgs.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile0Higgs.Fill(myEta, ratio);
00842 hElectronEtaClass0Higgs.Fill(myEta);
00843 }
00844 else if (electronClass == 1) {
00845 hElectronClass1Higgs.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile1Higgs.Fill(myEta, ratio);
00846 hElectronEtaClass1Higgs.Fill(myEta);
00847 }
00848 else if (electronClass == 2) {
00849 hElectronClass2Higgs.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile2Higgs.Fill(myEta, ratio);
00850 hElectronEtaClass2Higgs.Fill(myEta);
00851 }
00852 else if (electronClass == 3) {
00853 hElectronClass3Higgs.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile3Higgs.Fill(myEta, ratio);
00854 hElectronEtaClass3Higgs.Fill(myEta);
00855 }
00856 else if (electronClass == 4) {
00857 hElectronClass4Higgs.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile4Higgs.Fill(myEta, ratio);
00858 hElectronEtaClass4Higgs.Fill(myEta);
00859 }
00860 else if (electronClass == 10) {
00861 hElectronClass10Higgs.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile10Higgs.Fill(myEta, ratio);
00862 hElectronEtaClass10Higgs.Fill(myEta);
00863 }
00864 else if (electronClass == 11) {
00865 hElectronClass11Higgs.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile11Higgs.Fill(myEta, ratio);
00866 hElectronEtaClass11Higgs.Fill(myEta);
00867 }
00868 else if (electronClass == 12) {
00869 hElectronClass12Higgs.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile12Higgs.Fill(myEta, ratio);
00870 hElectronEtaClass12Higgs.Fill(myEta);
00871 }
00872 else if (electronClass == 13) {
00873 hElectronClass13Higgs.Fill(ratio); if (ratio > 0.8 && ratio < 2.) hElectronClassProfile13Higgs.Fill(myEta, ratio);
00874 hElectronEtaClass13Higgs.Fill(myEta);
00875 }
00876 }
00877
00878
00879
00880
00881
00882
00883
00884
00885
00886
00887
00888
00889
00890
00891
00892
00893
00894
00895
00896
00897
00898
00899
00900
00901
00902
00903
00904
00905
00906
00907
00908
00909
00910
00911 if (selector.isPtCut(5.,10.,15.,20.)) nCutsPt++;
00912 else {clean(event, generatorEvent, geantEvent);continue;}
00913
00914
00915
00916 if (selector.isRealZMassCut(XANASelectHZZ::ZMASSPDG-15.,XANASelectHZZ::ZMASSPDG+15.)) nCutsRealZMass++;
00917
00918 else {clean(event, generatorEvent, geantEvent);continue; }
00919
00920
00921
00922 if (selector.isVirtualZMassCut(10.,60.)) nCutsVirtualZMass++;
00923
00924 else {clean(event, generatorEvent, geantEvent);continue; }
00925
00926
00927
00928 if (selector.isHiggsMassCut(140.,160.)) nCutsHiggsMass++;
00929
00930 else {clean(event, generatorEvent, geantEvent);continue; }
00931
00932
00933
00934
00935 hRealZMassCuts.Fill(realZ.m());
00936 hVirtualZMassCuts.Fill(virtualZ.m());
00937 hHiggsMassCuts.Fill(higgs.m());
00938
00939 for (int ieh = 0; ieh < 4; ieh++){
00940 hElectronPtCuts.Fill(electronsHiggs[ieh]->getPt());
00941 tmpElRec = electronsHiggs[ieh]->getMomentumAtVertex();
00942 tmpElGen = ((electronsRecGen.find(electronsHiggs[ieh]))->second)->getMomentum();
00943 hElectronRecGenPtHiggsCuts.Fill(tmpElRec.perp()/tmpElGen.perp());
00944 hElectronRecGenDrHiggsCuts.Fill(tmpElRec.deltaR(tmpElGen));
00945 }
00946
00947
00948 if (issignal&&selectorMc.isFourElectrons()) mc4eCuts++;
00949 if (issignal&&selectorMc.isFourTaus()) mc4tCuts++;
00950 if (issignal&&selectorMc.isTwoElectronsTwoTaus()) mc2e2tCuts++;
00951
00952
00953 event->clear();
00954 generatorEvent->clear();
00955 geantEvent->clear();
00956
00957 }
00958
00959
00960
00961
00962 cout << " -------------------------------------------------------------------------------" << endl;
00963 cout << " ACCEPTANCES " << endl;
00964 cout << " TOTAL NUMBER OF EVENTS = " << nevent << endl;
00965 cout << " TOTAL NUMBER OF EVENTS read = " << ievent << endl;
00966 cout << " NUMBER of 4e events (signal) = " <<nconsidered<<endl;
00967 cout << " -------------------------------------------------------------------------------" << endl;
00968 cout << " #EVENTS RELATIVE ACC. (%) APSOLUTE ACC. (%) " << endl;
00969 cout << " -------------------------------------------------------------------------------" << endl;
00970 cout << " 1. TRIGGER (L1) = \t" << nTrigAccL1 << "\t\t" << 100.*nTrigAccL1/nconsidered
00971 << "\t\t\t" << 100.*nTrigAccL1/nconsidered << endl;
00972 cout << " 1. TRIGGER (HLT) = \t" << nTrigAccHLT << "\t\t" << 100.*nTrigAccHLT/nTrigAccL1
00973 << "\t\t\t" << 100.*nTrigAccHLT/nconsidered << endl;
00974 cout << " 1. TRIGGER (HLT elec) = \t" << nTrigAccHLTelec << "\t\t" << 100.*nTrigAccHLTelec/nTrigAccHLT
00975 << "\t\t\t" << 100.*nTrigAccHLTelec/nconsidered << endl;
00976 cout << " 2. SIMPLE CUTS = \t" << nPresAcc << "\t\t" << 100.*nPresAcc/nTrigAccHLTelec
00977 << "\t\t\t" << 100.*nPresAcc/nconsidered << endl;
00978 cout << " 3. LOOSE ISOLATION = \t" << nIsoAcc << "\t\t" << 100.*nIsoAcc/nPresAcc
00979 << "\t\t\t" << 100.*nIsoAcc/nconsidered << endl;
00980 cout << " 3. TIGH ISOLATION = \t" << niso << "\t\t" << 100.*niso/nIsoAcc
00981 << "\t\t\t" << 100.*niso/nconsidered << endl;
00982
00983
00984 cout << " 4. HZZ RECO = \t" << n2e2pAcc << "\t\t" << 100.*n2e2pAcc/niso
00985 << "\t\t\t" << 100.*n2e2pAcc/nconsidered << endl;
00986
00987
00988 cout << " 6. ELECTRON PT = \t" << nCutsPt << "\t\t" << 100.*nCutsPt/n2e2pAcc
00989 << "\t\t\t" << 100.*nCutsPt/nconsidered << endl;
00990 cout << " 7. REAL Z MASS = \t" << nCutsRealZMass << "\t\t" << 100.*nCutsRealZMass/nCutsPt
00991 << "\t\t\t" << 100.*nCutsRealZMass/nconsidered << endl;
00992 cout << " 8. VIRTUAL Z MASS = \t" << nCutsVirtualZMass << "\t\t" << 100.*nCutsVirtualZMass/nCutsRealZMass
00993 << "\t\t\t" << 100.*nCutsVirtualZMass/nconsidered << endl;
00994 cout << " 9. HIGGS MASS = \t" << nCutsHiggsMass << "\t\t" << 100.*nCutsHiggsMass/nCutsVirtualZMass
00995 << "\t\t\t" << 100.*nCutsHiggsMass/nconsidered << endl;
00996 cout << " -------------------------------------------------------------------------------" << endl;
00997 cout << " TOTAL ACCEPTANCE = " << 100.*nCutsHiggsMass/nconsidered << "%" << endl;
00998 cout << " -------------------------------------------------------------------------------" << endl;
00999
01000 cout << nevent << " events and " << nb << " bytes read " << endl;
01001 cout << endl;
01002
01003
01004
01005 f.Write();
01006 f.Close();
01007
01008 event->Delete();
01009 generatorEvent->Delete();
01010 geantEvent->Delete();
01011 stopWatch.Stop();
01012 cout << "Time elapsed - CPU: " << stopWatch.CpuTime() <<
01013 " real: " << stopWatch.RealTime() << endl;
01014
01015 }