Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members

singlee_analysis.cpp File Reference

#include <XANADOO/domain/interface/XANAEsdEvent.h>
#include <XANADOO/XANAMcInfo/interface/XANAGeneratorEvent.h>
#include <XANADOO/XANAMcInfo/interface/XANAGeantEvent.h>
#include <XANADOO/XANAMcInfo/interface/XANAGeneratorParticle.h>
#include <XANADOO/XANAElectronCandidate/interface/XANAElectronCandidate.h>
#include <XANADOO/XANAElectronCandidate/interface/XANAElectronTrack.h>
#include <XANADOO/XANAElectronCandidate/interface/XANAElectronGSFTrack.h>
#include <XANADOO/XANAVertex/interface/XANAVertex.h>
#include <XANADOO/XANATracks/interface/XANATrack.h>
#include <XANADOO/XANAnalysisTools/interface/XANAmbiguityResolve.h>
#include <XANADOO/XANAnalysisZZ/interface/XANASelectHZZ.h>
#include <XANADOO/XANAnalysisZZ/interface/XANASelectMcHZZ.h>
#include <XANADOO/XANAnalysisTools/interface/XANAEvtIsolation.h>
#include <XANADOO/XANAnalysisTools/interface/XANAEvtRegionIsolation.h>
#include <XANADOO/XANAnalysisTools/interface/XANAIsolation.h>
#include <XANADOO/XANAnalysisTools/interface/XANAnalysisTrigger.h>
#include <XANADOO/XANATriggerInfo/interface/XANATriggerInfo.h>
#include <XANADOO/XANAnalysisTools/interface/XANAElectronRecGen.h>
#include <XANADOO/XANAnalysisTools/interface/XANAEventSelect.h>
#include <XANADOO/XANAnalysisTools/interface/XANAElectronClassification.h>
#include <XANADOO/XANAnalysisTools/interface/XANAElectronSelect.h>
#include <XANADOO/XANAnalysisTools/interface/XANAElectronCorrection.h>
#include <XANADOO/XANAnalysisTools/interface/XANAElectronMomentum.h>
#include "CLHEP/Geometry/Point3D.h"
#include "TChain.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TFile.h"
#include "TNtuple.h"
#include "TObjArray.h"
#include "TStopwatch.h"
#include <string>
#include <set>

Include dependency graph for singlee_analysis.cpp:

Go to the source code of this file.

Functions

int main (int argc, char **argv)


Function Documentation

int main int  argc,
char **  argv
 

*

Definition at line 43 of file singlee_analysis.cpp.

References XANAGeantEvent::clear(), XANAGeneratorEvent::clear(), XANAEsdEvent::clear(), electrons, XANAElectronSelect::ElSelect_dphi(), XANATrack::getAlgoName(), XANAEsdEvent::getElectronCandidates(), XANAElectronClassification::getElectronClass(), XANAElectronRecGen::getElectronsRecGen(), XANAElectronCandidate::getElectronTrack(), XANASuperCluster::getEnergy(), XANASuperCluster::getEnergyScaleFactor(), XANAElectronGSFTrack::getGSFMomentumAtVertexMode(), XANASuperCluster::getHadronicOverEm(), XANAnalysisTrigger::getHLTDecision(), XANAEvtIsolation::getIsolationVector(), XANAnalysisTrigger::getL1Decision(), XANAElectronCandidate::getMomentumAtVertex(), XANATrack::getMomentumAtVertex(), XANAEsdEvent::getNumberOfElectronCandidates(), XANASuperCluster::getPosition(), XANAmbiguityResolve::getResolvedElcands(), XANAElectronSelect::getSelectedElectrons(), XANAElectronCandidate::getSuperCluster(), XANAElectronCandidate::getSuperClusterEnergy(), XANAElectronCandidate::getSuperClusterPosition(), XANAEsdEvent::getSuperClusters(), XANAEsdEvent::getTriggerInfo(), isolationVector, XANAmbiguityResolve::ResolveByEoverP(), XANAElectronCandidate::setESuperClusterOverP(), XANAElectronCandidate::setHadronicOverEm(), XANAElectronCandidate::setMomentumAtVertex(), XANAElectronCandidate::setSuperCluster(), XANAElectronCandidate::setSuperClusterEnergy(), and superClusters.

00044 {
00045 
00046         TStopwatch stopWatch;
00047         stopWatch.Start();
00048 
00049         // Steering flags
00050         bool momentumCorrection = true;
00051         bool federicoEscaleCorrection = true;
00052         bool egammaEscaleCorrection = true;
00053         
00054         // version TChain
00055         Char_t fileName[512];
00056         Short_t numberOfFiles = 200;
00057         //Short_t numberOfFiles = 20;
00058         TChain *T = new TChain("ESD");
00059         for (Int_t m_fi = 0; m_fi < numberOfFiles ; m_fi++) {
00060                 //T->Add(Form("/sps/cms/baffioni/XanadooTrees_050905/hg03_hzz_4e_150_XANA_152pre3/hg03_hzz_4e_150.root.%04d",m_fi));
00061                 sprintf(fileName,"/sps/cms/ferri/XanadooTrees/ele_p05100_XANA_152pre3/ele_p05100.root.%04d",m_fi);
00062                 TFile *F = new TFile(fileName);
00063 
00064                 if (!(F->GetNkeys())) {
00065                         printf("File %s has no key --> skipping\n",argv[m_fi]);
00066                         F->Close();
00067                         delete F;
00068                         continue;
00069                 }
00070                 F->Close();
00071                 delete F;
00072 
00073                 T->Add(Form("/sps/cms/ferri/XanadooTrees/ele_p05100_XANA_152pre3/ele_p05100.root.%04d",m_fi));
00074                 //T->Add(Form("/sps/cms/ferri/XanadooTrees/eg03_tt_4e_XANA_152pre3/eg03_tt_4e.root.%04d",m_fi));
00075         }
00076 
00078         // Histos //
00080         string histoFileName = "histos.root";
00081         TFile *hFile = new TFile(histoFileName.c_str(),"RECREATE");
00082         
00083         // number of electron candidates, current electron candidate, etc...
00084         TNtuple *ntu = new TNtuple("ntu","ntu","iev:ne:ie:ETrue:Euncorr:E:p:comb:etaTrue");
00085 
00086         // classification
00087         TH1F *hElectronEuncorrOverEtrue        = new TH1F("hElectronEuncorrOverEtrue","Electron Candidates Euncorr/Etrue", 450, 0.,1.5);
00088         TH1F *hElectronEuncorrOverEtrueClass0  = new TH1F("hElectronEuncorrOverEtrueClass0","Electron Candidates Euncorr/Etrue Class: 0, Barrel-Golden", 450, 0.,1.5);
00089         TH1F *hElectronEuncorrOverEtrueClass1  = new TH1F("hElectronEuncorrOverEtrueClass1","Electron Candidates Euncorr/Etrue Class: 1, Barrel-Big Brem", 450, 0.,1.5);
00090         TH1F *hElectronEuncorrOverEtrueClass2  = new TH1F("hElectronEuncorrOverEtrueClass2","Electron Candidates Euncorr/Etrue Class: 2, Barrel-Narrow", 450, 0.,1.5);
00091         TH1F *hElectronEuncorrOverEtrueClass3  = new TH1F("hElectronEuncorrOverEtrueClass3","Electron Candidates Euncorr/Etrue Class: 3, Barrel-Showering", 450, 0.,1.5);
00092         TH1F *hElectronEuncorrOverEtrueClass4  = new TH1F("hElectronEuncorrOverEtrueClass4","Electron Candidates Euncorr/Etrue Class: 4, Barrel-Cracks", 450, 0.,1.5);
00093         TH1F *hElectronEuncorrOverEtrueClass10 = new TH1F("hElectronEuncorrOverEtrueClass10","Electron Candidates Euncorr/Etrue Class: 0, Endcap-Golden", 450, 0.,1.5);
00094         TH1F *hElectronEuncorrOverEtrueClass11 = new TH1F("hElectronEuncorrOverEtrueClass11","Electron Candidates Euncorr/Etrue Class: 1, Endcap-Big Brem", 450, 0.,1.5);
00095         TH1F *hElectronEuncorrOverEtrueClass12 = new TH1F("hElectronEuncorrOverEtrueClass12","Electron Candidates Euncorr/Etrue Class: 2, Endcap-Narrow", 450, 0.,1.5);
00096         TH1F *hElectronEuncorrOverEtrueClass13 = new TH1F("hElectronEuncorrOverEtrueClass13","Electron Candidates Euncorr/Etrue Class: 3, Endcap-Showering", 450, 0.,1.5);
00097                 
00098         TH1F *hElectronEOverEtrue        = new TH1F("hElectronEOverEtrue","Electron Candidates E/Etrue", 450, 0.,1.5);
00099         TH1F *hElectronEOverEtrueClass0  = new TH1F("hElectronEOverEtrueClass0","Electron Candidates E/Etrue Class: 0, Barrel-Golden", 450, 0.,1.5);
00100         TH1F *hElectronEOverEtrueClass1  = new TH1F("hElectronEOverEtrueClass1","Electron Candidates E/Etrue Class: 1, Barrel-Big Brem", 450, 0.,1.5);
00101         TH1F *hElectronEOverEtrueClass2  = new TH1F("hElectronEOverEtrueClass2","Electron Candidates E/Etrue Class: 2, Barrel-Narrow", 450, 0.,1.5);
00102         TH1F *hElectronEOverEtrueClass3  = new TH1F("hElectronEOverEtrueClass3","Electron Candidates E/Etrue Class: 3, Barrel-Showering", 450, 0.,1.5);
00103         TH1F *hElectronEOverEtrueClass4  = new TH1F("hElectronEOverEtrueClass4","Electron Candidates E/Etrue Class: 4, Barrel-Cracks", 450, 0.,1.5);
00104         TH1F *hElectronEOverEtrueClass10 = new TH1F("hElectronEOverEtrueClass10","Electron Candidates E/Etrue Class: 0, Endcap-Golden", 450, 0.,1.5);
00105         TH1F *hElectronEOverEtrueClass11 = new TH1F("hElectronEOverEtrueClass11","Electron Candidates E/Etrue Class: 1, Endcap-Big Brem", 450, 0.,1.5);
00106         TH1F *hElectronEOverEtrueClass12 = new TH1F("hElectronEOverEtrueClass12","Electron Candidates E/Etrue Class: 2, Endcap-Narrow", 450, 0.,1.5);
00107         TH1F *hElectronEOverEtrueClass13 = new TH1F("hElectronEOverEtrueClass13","Electron Candidates E/Etrue Class: 3, Endcap-Showering", 450, 0.,1.5);
00108 
00109         TH1F *hElectronPOverEtrue        = new TH1F("hElectronPOverEtrue","Electron Candidates p/Etrue", 450, 0.,1.5);
00110         TH1F *hElectronPOverEtrueClass0  = new TH1F("hElectronPOverEtrueClass0","Electron Candidates p/Etrue Class: 0, Barrel-Golden", 450, 0.,1.5);
00111         TH1F *hElectronPOverEtrueClass1  = new TH1F("hElectronPOverEtrueClass1","Electron Candidates p/Etrue Class: 1, Barrel-Big Brem", 450, 0.,1.5);
00112         TH1F *hElectronPOverEtrueClass2  = new TH1F("hElectronPOverEtrueClass2","Electron Candidates p/Etrue Class: 2, Barrel-Narrow", 450, 0.,1.5);
00113         TH1F *hElectronPOverEtrueClass3  = new TH1F("hElectronPOverEtrueClass3","Electron Candidates p/Etrue Class: 3, Barrel-Showering", 450, 0.,1.5);
00114         TH1F *hElectronPOverEtrueClass4  = new TH1F("hElectronPOverEtrueClass4","Electron Candidates p/Etrue Class: 4, Barrel-Cracks", 450, 0.,1.5);
00115         TH1F *hElectronPOverEtrueClass10 = new TH1F("hElectronPOverEtrueClass10","Electron Candidates p/Etrue Class: 0, Endcap-Golden", 450, 0.,1.5);
00116         TH1F *hElectronPOverEtrueClass11 = new TH1F("hElectronPOverEtrueClass11","Electron Candidates p/Etrue Class: 1, Endcap-Big Brem", 450, 0.,1.5);
00117         TH1F *hElectronPOverEtrueClass12 = new TH1F("hElectronPOverEtrueClass12","Electron Candidates p/Etrue Class: 2, Endcap-Narrow", 450, 0.,1.5);
00118         TH1F *hElectronPOverEtrueClass13 = new TH1F("hElectronPOverEtrueClass13","Electron Candidates p/Etrue Class: 3, Endcap-Showering", 450, 0.,1.5);
00119 
00120         TH1F *hElectronCombOverEtrue        = new TH1F("hElectronCombOverEtrue","Electron Candidates comb/Etrue", 450, 0.,1.5);
00121         TH1F *hElectronCombOverEtrueClass0  = new TH1F("hElectronCombOverEtrueClass0","Electron Candidates comb/Etrue Class: 0, Barrel-Golden", 450, 0.,1.5);
00122         TH1F *hElectronCombOverEtrueClass1  = new TH1F("hElectronCombOverEtrueClass1","Electron Candidates comb/Etrue Class: 1, Barrel-Big Brem", 450, 0.,1.5);
00123         TH1F *hElectronCombOverEtrueClass2  = new TH1F("hElectronCombOverEtrueClass2","Electron Candidates comb/Etrue Class: 2, Barrel-Narrow", 450, 0.,1.5);
00124         TH1F *hElectronCombOverEtrueClass3  = new TH1F("hElectronCombOverEtrueClass3","Electron Candidates comb/Etrue Class: 3, Barrel-Showering", 450, 0.,1.5);
00125         TH1F *hElectronCombOverEtrueClass4  = new TH1F("hElectronCombOverEtrueClass4","Electron Candidates comb/Etrue Class: 4, Barrel-Cracks", 450, 0.,1.5);
00126         TH1F *hElectronCombOverEtrueClass10 = new TH1F("hElectronCombOverEtrueClass10","Electron Candidates comb/Etrue Class: 0, Endcap-Golden", 450, 0.,1.5);
00127         TH1F *hElectronCombOverEtrueClass11 = new TH1F("hElectronCombOverEtrueClass11","Electron Candidates comb/Etrue Class: 1, Endcap-Big Brem", 450, 0.,1.5);
00128         TH1F *hElectronCombOverEtrueClass12 = new TH1F("hElectronCombOverEtrueClass12","Electron Candidates comb/Etrue Class: 2, Endcap-Narrow", 450, 0.,1.5);
00129         TH1F *hElectronCombOverEtrueClass13 = new TH1F("hElectronCombOverEtrueClass13","Electron Candidates comb/Etrue Class: 3, Endcap-Showering", 450, 0.,1.5);
00130 
00131         TH2F *h2ElectronEuncorrOverEtrueClass0  = new TH2F("h2ElectronEuncorrOverEtrueClass0","Electron Candidates Euncorr/Etrue Class TH2: 0, Barrel-Golden",100, 0., 2.7,100, 0., 1.5);
00132         TH2F *h2ElectronEuncorrOverEtrueClass1  = new TH2F("h2ElectronEuncorrOverEtrueClass1","Electron Candidates Euncorr/Etrue Class TH2: 1, Barrel-Big Brem",100, 0., 2.7,100, 0., 1.5);
00133         TH2F *h2ElectronEuncorrOverEtrueClass2  = new TH2F("h2ElectronEuncorrOverEtrueClass2","Electron Candidates Euncorr/Etrue Class TH2: 2, Barrel-Narrow",100, 0., 2.7,100, 0., 1.5);
00134         TH2F *h2ElectronEuncorrOverEtrueClass3  = new TH2F("h2ElectronEuncorrOverEtrueClass3","Electron Candidates Euncorr/Etrue Class TH2: 3, Barrel-Showering",100, 0., 2.7,100, 0., 1.5);
00135         TH2F *h2ElectronEuncorrOverEtrueClass4  = new TH2F("h2ElectronEuncorrOverEtrueClass4","Electron Candidates Euncorr/Etrue Class TH2: 4, Barrel-Cracks",100, 0., 2.7,100, 0., 1.5);
00136         TH2F *h2ElectronEuncorrOverEtrueClass10 = new TH2F("h2ElectronEuncorrOverEtrueClass10","Electron Candidates Euncorr/Etrue Class TH2: 0, Endcap-Golden",100, 0., 2.7,100, 0., 1.5);
00137         TH2F *h2ElectronEuncorrOverEtrueClass11 = new TH2F("h2ElectronEuncorrOverEtrueClass11","Electron Candidates Euncorr/Etrue Class TH2: 1, Endcap-Big Brem",100, 0., 2.7,100, 0., 1.5);
00138         TH2F *h2ElectronEuncorrOverEtrueClass12 = new TH2F("h2ElectronEuncorrOverEtrueClass12","Electron Candidates Euncorr/Etrue Class TH2: 2, Endcap-Narrow",100, 0., 2.7,100, 0., 1.5);
00139         TH2F *h2ElectronEuncorrOverEtrueClass13 = new TH2F("h2ElectronEuncorrOverEtrueClass13","Electron Candidates Euncorr/Etrue Class TH2: 3, Endcap-Showering",100, 0., 2.7,100, 0., 1.5);
00140 
00141         TH2F *h2ElectronEOverEtrueClass0  = new TH2F("h2ElectronEOverEtrueClass0","Electron Candidates E/Etrue Class TH2: 0, Barrel-Golden",100, 0., 2.7,100, 0., 1.5);
00142         TH2F *h2ElectronEOverEtrueClass1  = new TH2F("h2ElectronEOverEtrueClass1","Electron Candidates E/Etrue Class TH2: 1, Barrel-Big Brem",100, 0., 2.7,100, 0., 1.5);
00143         TH2F *h2ElectronEOverEtrueClass2  = new TH2F("h2ElectronEOverEtrueClass2","Electron Candidates E/Etrue Class TH2: 2, Barrel-Narrow",100, 0., 2.7,100, 0., 1.5);
00144         TH2F *h2ElectronEOverEtrueClass3  = new TH2F("h2ElectronEOverEtrueClass3","Electron Candidates E/Etrue Class TH2: 3, Barrel-Showering",100, 0., 2.7,100, 0., 1.5);
00145         TH2F *h2ElectronEOverEtrueClass4  = new TH2F("h2ElectronEOverEtrueClass4","Electron Candidates E/Etrue Class TH2: 4, Barrel-Cracks",100, 0., 2.7,100, 0., 1.5);
00146         TH2F *h2ElectronEOverEtrueClass10 = new TH2F("h2ElectronEOverEtrueClass10","Electron Candidates E/Etrue Class TH2: 0, Endcap-Golden",100, 0., 2.7,100, 0., 1.5);
00147         TH2F *h2ElectronEOverEtrueClass11 = new TH2F("h2ElectronEOverEtrueClass11","Electron Candidates E/Etrue Class TH2: 1, Endcap-Big Brem",100, 0., 2.7,100, 0., 1.5);
00148         TH2F *h2ElectronEOverEtrueClass12 = new TH2F("h2ElectronEOverEtrueClass12","Electron Candidates E/Etrue Class TH2: 2, Endcap-Narrow",100, 0., 2.7,100, 0., 1.5);
00149         TH2F *h2ElectronEOverEtrueClass13 = new TH2F("h2ElectronEOverEtrueClass13","Electron Candidates E/Etrue Class TH2: 3, Endcap-Showering",100, 0., 2.7,100, 0., 1.5);
00150 
00151         TH2F *h2ElectronPOverEtrueClass0  = new TH2F("h2ElectronPOverEtrueClass0","Electron Candidates P/Etrue Class TH2: 0, Barrel-Golden",100, 0., 2.7,100, 0., 1.5);
00152         TH2F *h2ElectronPOverEtrueClass1  = new TH2F("h2ElectronPOverEtrueClass1","Electron Candidates P/Etrue Class TH2: 1, Barrel-Big Brem",100, 0., 2.7,100, 0., 1.5);
00153         TH2F *h2ElectronPOverEtrueClass2  = new TH2F("h2ElectronPOverEtrueClass2","Electron Candidates P/Etrue Class TH2: 2, Barrel-Narrow",100, 0., 2.7,100, 0., 1.5);
00154         TH2F *h2ElectronPOverEtrueClass3  = new TH2F("h2ElectronPOverEtrueClass3","Electron Candidates P/Etrue Class TH2: 3, Barrel-Showering",100, 0., 2.7,100, 0., 1.5);
00155         TH2F *h2ElectronPOverEtrueClass4  = new TH2F("h2ElectronPOverEtrueClass4","Electron Candidates P/Etrue Class TH2: 4, Barrel-Cracks",100, 0., 2.7,100, 0., 1.5);
00156         TH2F *h2ElectronPOverEtrueClass10 = new TH2F("h2ElectronPOverEtrueClass10","Electron Candidates P/Etrue Class TH2: 0, Endcap-Golden",100, 0., 2.7,100, 0., 1.5);
00157         TH2F *h2ElectronPOverEtrueClass11 = new TH2F("h2ElectronPOverEtrueClass11","Electron Candidates P/Etrue Class TH2: 1, Endcap-Big Brem",100, 0., 2.7,100, 0., 1.5);
00158         TH2F *h2ElectronPOverEtrueClass12 = new TH2F("h2ElectronPOverEtrueClass12","Electron Candidates P/Etrue Class TH2: 2, Endcap-Narrow",100, 0., 2.7,100, 0., 1.5);
00159         TH2F *h2ElectronPOverEtrueClass13 = new TH2F("h2ElectronPOverEtrueClass13","Electron Candidates P/Etrue Class TH2: 3, Endcap-Showering",100, 0., 2.7,100, 0., 1.5);
00160 
00161         TH2F *h2ElectronCombOverEtrueClass0  = new TH2F("h2ElectronCombOverEtrueClass0","Electron Candidates comb/Etrue Class TH2: 0, Barrel-Golden",100, 0., 2.7,100, 0., 1.5);
00162         TH2F *h2ElectronCombOverEtrueClass1  = new TH2F("h2ElectronCombOverEtrueClass1","Electron Candidates comb/Etrue Class TH2: 1, Barrel-Big Brem",100, 0., 2.7,100, 0., 1.5);
00163         TH2F *h2ElectronCombOverEtrueClass2  = new TH2F("h2ElectronCombOverEtrueClass2","Electron Candidates comb/Etrue Class TH2: 2, Barrel-Narrow",100, 0., 2.7,100, 0., 1.5);
00164         TH2F *h2ElectronCombOverEtrueClass3  = new TH2F("h2ElectronCombOverEtrueClass3","Electron Candidates comb/Etrue Class TH2: 3, Barrel-Showering",100, 0., 2.7,100, 0., 1.5);
00165         TH2F *h2ElectronCombOverEtrueClass4  = new TH2F("h2ElectronCombOverEtrueClass4","Electron Candidates comb/Etrue Class TH2: 4, Barrel-Cracks",100, 0., 2.7,100, 0., 1.5);
00166         TH2F *h2ElectronCombOverEtrueClass10 = new TH2F("h2ElectronCombOverEtrueClass10","Electron Candidates comb/Etrue Class TH2: 0, Endcap-Golden",100, 0., 2.7,100, 0., 1.5);
00167         TH2F *h2ElectronCombOverEtrueClass11 = new TH2F("h2ElectronCombOverEtrueClass11","Electron Candidates comb/Etrue Class TH2: 1, Endcap-Big Brem",100, 0., 2.7,100, 0., 1.5);
00168         TH2F *h2ElectronCombOverEtrueClass12 = new TH2F("h2ElectronCombOverEtrueClass12","Electron Candidates comb/Etrue Class TH2: 2, Endcap-Narrow",100, 0., 2.7,100, 0., 1.5);
00169         TH2F *h2ElectronCombOverEtrueClass13 = new TH2F("h2ElectronCombOverEtrueClass13","Electron Candidates comb/Etrue Class TH2: 3, Endcap-Showering",100, 0., 2.7,100, 0., 1.5);
00170 
00171 
00172         TH2F *h2ElectronEOverEtrueEP  = new TH2F("h2ElectronEOverEtrueEP","Electron Candidates E/Etrue vs E/P",500, 0.,2.5,500, 0.,2.3);
00173         TH2F *h2ElectronEOverEtrueEPClass0  = new TH2F("h2ElectronEOverEtrueEPClass0","Electron Candidates E/Etrue vs E/P Class: 0, Barrel-Golden",500, 0.,2.5,500, 0.,2.3);
00174         TH2F *h2ElectronEOverEtrueEPClass1  = new TH2F("h2ElectronEOverEtrueEPClass1","Electron Candidates E/Etrue vs E/P Class: 1, Barrel-Big Brem",500, 0.,2.5,500, 0.,2.3);
00175         TH2F *h2ElectronEOverEtrueEPClass2  = new TH2F("h2ElectronEOverEtrueEPClass2","Electron Candidates E/Etrue vs E/P Class: 2, Barrel-Narrow",500, 0.,2.5,500, 0.,2.3);
00176         TH2F *h2ElectronEOverEtrueEPClass3  = new TH2F("h2ElectronEOverEtrueEPClass3","Electron Candidates E/Etrue vs E/P Class: 3, Barrel-Showering",500, 0.,2.5,500, 0.,2.3);
00177         TH2F *h2ElectronEOverEtrueEPClass4  = new TH2F("h2ElectronEOverEtrueEPClass4","Electron Candidates E/Etrue vs E/P Class: 4, Barrel-Cracks",500, 0.,2.5,500, 0.,2.3);
00178         TH2F *h2ElectronEOverEtrueEPClass10 = new TH2F("h2ElectronEOverEtrueEPClass10","Electron Candidates E/Etrue vs E/P Class: 10, Endcap-Golden",500, 0.,2.5,500, 0.,2.3);
00179         TH2F *h2ElectronEOverEtrueEPClass11 = new TH2F("h2ElectronEOverEtrueEPClass11","Electron Candidates E/Etrue vs E/P Class: 11, Endcap-Big Brem",500, 0.,2.5,500, 0.,2.3);
00180         TH2F *h2ElectronEOverEtrueEPClass12 = new TH2F("h2ElectronEOverEtrueEPClass12","Electron Candidates E/Etrue vs E/P Class: 12, Endcap-Narrow",500, 0.,2.5,500, 0.,2.3);
00181         TH2F *h2ElectronEOverEtrueEPClass13 = new TH2F("h2ElectronEOverEtrueEPClass13","Electron Candidates E/Etrue vs E/P Class: 13, Endcap-Showering",500, 0.,2.5,500, 0.,2.3);
00182 
00183         TH2F *h2ElectronPOverEtrueEP  = new TH2F("h2ElectronPOverEtrueEP","Electron Candidates p/Etrue vs E/P",500, 0.,2.5,500, 0.,2.3);
00184         TH2F *h2ElectronPOverEtrueEPClass0  = new TH2F("h2ElectronPOverEtrueEPClass0","Electron Candidates p/Etrue vs E/P Class: 0, Barrel-Golden",500, 0.,2.5,500, 0.,2.3);
00185         TH2F *h2ElectronPOverEtrueEPClass1  = new TH2F("h2ElectronPOverEtrueEPClass1","Electron Candidates p/Etrue vs E/P Class: 1, Barrel-Big Brem",500, 0.,2.5,500, 0.,2.3);
00186         TH2F *h2ElectronPOverEtrueEPClass2  = new TH2F("h2ElectronPOverEtrueEPClass2","Electron Candidates p/Etrue vs E/P Class: 2, Barrel-Narrow",500, 0.,2.5,500, 0.,2.3);
00187         TH2F *h2ElectronPOverEtrueEPClass3  = new TH2F("h2ElectronPOverEtrueEPClass3","Electron Candidates p/Etrue vs E/P Class: 3, Barrel-Showering",500, 0.,2.5,500, 0.,2.3);
00188         TH2F *h2ElectronPOverEtrueEPClass4  = new TH2F("h2ElectronPOverEtrueEPClass4","Electron Candidates p/Etrue vs E/P Class: 4, Barrel-Cracks",500, 0.,2.5,500, 0.,2.3);
00189         TH2F *h2ElectronPOverEtrueEPClass10 = new TH2F("h2ElectronPOverEtrueEPClass10","Electron Candidates p/Etrue vs E/P Class: 10, Endcap-Golden",500, 0.,2.5,500, 0.,2.3);
00190         TH2F *h2ElectronPOverEtrueEPClass11 = new TH2F("h2ElectronPOverEtrueEPClass11","Electron Candidates p/Etrue vs E/P Class: 11, Endcap-Big Brem",500, 0.,2.5,500, 0.,2.3);
00191         TH2F *h2ElectronPOverEtrueEPClass12 = new TH2F("h2ElectronPOverEtrueEPClass12","Electron Candidates p/Etrue vs E/P Class: 12, Endcap-Narrow",500, 0.,2.5,500, 0.,2.3);
00192         TH2F *h2ElectronPOverEtrueEPClass13 = new TH2F("h2ElectronPOverEtrueEPClass13","Electron Candidates p/Etrue vs E/P Class: 13, Endcap-Showering",500, 0.,2.5,500, 0.,2.3);
00193 
00194         TH2F *h2ElectronCombOverEtrueEP  = new TH2F("h2ElectronCombOverEtrueEP","Electron Candidates comb/Etrue vs E/P",500, 0.,2.5,500, 0.,2.3);
00195         TH2F *h2ElectronCombOverEtrueEPClass0  = new TH2F("h2ElectronCombOverEtrueEPClass0","Electron Candidates comb/Etrue vs E/P Class: 0, Barrel-Golden",500, 0.,2.5,500, 0.,2.3);
00196         TH2F *h2ElectronCombOverEtrueEPClass1  = new TH2F("h2ElectronCombOverEtrueEPClass1","Electron Candidates comb/Etrue vs E/P Class: 1, Barrel-Big Brem",500, 0.,2.5,500, 0.,2.3);
00197         TH2F *h2ElectronCombOverEtrueEPClass2  = new TH2F("h2ElectronCombOverEtrueEPClass2","Electron Candidates comb/Etrue vs E/P Class: 2, Barrel-Narrow",500, 0.,2.5,500, 0.,2.3);
00198         TH2F *h2ElectronCombOverEtrueEPClass3  = new TH2F("h2ElectronCombOverEtrueEPClass3","Electron Candidates comb/Etrue vs E/P Class: 3, Barrel-Showering",500, 0.,2.5,500, 0.,2.3);
00199         TH2F *h2ElectronCombOverEtrueEPClass4  = new TH2F("h2ElectronCombOverEtrueEPClass4","Electron Candidates comb/Etrue vs E/P Class: 4, Barrel-Cracks",500, 0.,2.5,500, 0.,2.3);
00200         TH2F *h2ElectronCombOverEtrueEPClass10 = new TH2F("h2ElectronCombOverEtrueEPClass10","Electron Candidates comb/Etrue vs E/P Class: 10, Endcap-Golden",500, 0.,2.5,500, 0.,2.3);
00201         TH2F *h2ElectronCombOverEtrueEPClass11 = new TH2F("h2ElectronCombOverEtrueEPClass11","Electron Candidates comb/Etrue vs E/P Class: 11, Endcap-Big Brem",500, 0.,2.5,500, 0.,2.3);
00202         TH2F *h2ElectronCombOverEtrueEPClass12 = new TH2F("h2ElectronCombOverEtrueEPClass12","Electron Candidates comb/Etrue vs E/P Class: 12, Endcap-Narrow",500, 0.,2.5,500, 0.,2.3);
00203         TH2F *h2ElectronCombOverEtrueEPClass13 = new TH2F("h2ElectronCombOverEtrueEPClass13","Electron Candidates comb/Etrue vs E/P Class: 13, Endcap-Showering",500, 0.,2.5,500, 0.,2.3);
00204 
00205 
00206         TH1F *hElectronGenEta = new TH1F("hElectronGenEta","Generated Electron Eta",100, 0., 2.7);
00207 
00208 
00209         TH1F *hElectronPt = new TH1F("hElectronPt","Electron Candidates Pt",100, 0., 100.);
00210         TH1F *hElectronPtClass0 = new TH1F("hElectronPtClass0","Electron Candidates Pt Class: 0, Barrel-Golden",100, 0., 100.);
00211         TH1F *hElectronPtClass1 = new TH1F("hElectronPtClass1","Electron Candidates Pt Class: 1, Barrel-Big Brem",100, 0., 100.);
00212         TH1F *hElectronPtClass2 = new TH1F("hElectronPtClass2","Electron Candidates Pt Class: 2, Barrel-Narrow",100, 0., 100.);
00213         TH1F *hElectronPtClass3 = new TH1F("hElectronPtClass3","Electron Candidates Pt Class: 3, Barrel-Showering",100, 0., 100.);
00214         TH1F *hElectronPtClass4 = new TH1F("hElectronPtClass4","Electron Candidates Pt Class: 4, Barrel-Cracks",100, 0., 100.);
00215         TH1F *hElectronPtClass10 = new TH1F("hElectronPtClass10","Electron Candidates Pt Class: 0, Endcap-Golden",100, 0., 100.);
00216         TH1F *hElectronPtClass11 = new TH1F("hElectronPtClass11","Electron Candidates Pt Class: 1, Endcap-Big Brem",100, 0., 100.);
00217         TH1F *hElectronPtClass12 = new TH1F("hElectronPtClass12","Electron Candidates Pt Class: 2, Endcap-Narrow",100, 0., 100.);
00218         TH1F *hElectronPtClass13 = new TH1F("hElectronPtClass13","Electron Candidates Pt Class: 3, Endcap-Showering",100, 0., 100.);
00219 
00220         TH1F *hElectronL1Pt = new TH1F("hElectronL1Pt","Electron Candidates passing L1 Pt",100, 0., 100.);
00221         TH1F *hElectronL1PtClass0 = new TH1F("hElectronL1PtClass0","Electron Candidates passing L1 Pt Class: 0, Barrel-Golden",100, 0., 100.);
00222         TH1F *hElectronL1PtClass1 = new TH1F("hElectronL1PtClass1","Electron Candidates passing L1 Pt Class: 1, Barrel-Big Brem",100, 0., 100.);
00223         TH1F *hElectronL1PtClass2 = new TH1F("hElectronL1PtClass2","Electron Candidates passing L1 Pt Class: 2, Barrel-Narrow",100, 0., 100.);
00224         TH1F *hElectronL1PtClass3 = new TH1F("hElectronL1PtClass3","Electron Candidates passing L1 Pt Class: 3, Barrel-Showering",100, 0., 100.);
00225         TH1F *hElectronL1PtClass4 = new TH1F("hElectronL1PtClass4","Electron Candidates passing L1 Pt Class: 4, Barrel-Cracks",100, 0., 100.);
00226         TH1F *hElectronL1PtClass10 = new TH1F("hElectronL1PtClass10","Electron Candidates passing L1 Pt Class: 0, Barrel-Golden",100, 0., 100.);
00227         TH1F *hElectronL1PtClass11 = new TH1F("hElectronL1PtClass11","Electron Candidates passing L1 Pt Class: 1, Barrel-Big Brem",100, 0., 100.);
00228         TH1F *hElectronL1PtClass12 = new TH1F("hElectronL1PtClass12","Electron Candidates passing L1 Pt Class: 2, Barrel-Narrow",100, 0., 100.);
00229         TH1F *hElectronL1PtClass13 = new TH1F("hElectronL1PtClass13","Electron Candidates passing L1 Pt Class: 3, Barrel-Showering",100, 0., 100.);
00230 
00231         TH1F *hElectronHLTPt = new TH1F("hElectronHLTPt","Electron Candidates passing HLT Pt",100, 0., 100.);
00232         TH1F *hElectronHLTPtClass0 = new TH1F("hElectronHLTPtClass0","Electron Candidates passing HTL Pt Class: 0, Barrel-Golden",100, 0., 100.);
00233         TH1F *hElectronHLTPtClass1 = new TH1F("hElectronHLTPtClass1","Electron Candidates passing HLT Pt Class: 1, Barrel-Big Brem",100, 0., 100.);
00234         TH1F *hElectronHLTPtClass2 = new TH1F("hElectronHLTPtClass2","Electron Candidates passing HLT Pt Class: 2, Barrel-Narrow",100, 0., 100.);
00235         TH1F *hElectronHLTPtClass3 = new TH1F("hElectronHLTPtClass3","Electron Candidates passing HLT Pt Class: 3, Barrel-Showering",100, 0., 100.);
00236         TH1F *hElectronHLTPtClass4 = new TH1F("hElectronHLTPtClass4","Electron Candidates passing HLT Pt Class: 4, Barrel-Cracks",100, 0., 100.);
00237         TH1F *hElectronHLTPtClass10 = new TH1F("hElectronHLTPtClass10","Electron Candidates passing HLT Pt Class: 0, Barrel-Golden",100, 0., 100.);
00238         TH1F *hElectronHLTPtClass11 = new TH1F("hElectronHLTPtClass11","Electron Candidates passing HLT Pt Class: 1, Barrel-Big Brem",100, 0., 100.);
00239         TH1F *hElectronHLTPtClass12 = new TH1F("hElectronHLTPtClass12","Electron Candidates passing HLT Pt Class: 2, Barrel-Narrow",100, 0., 100.);
00240         TH1F *hElectronHLTPtClass13 = new TH1F("hElectronHLTPtClass13","Electron Candidates passing HLT Pt Class: 3, Barrel-Showering",100, 0., 100.);
00241 
00242 
00243         TH1F *hElectronEta = new TH1F("hElectronEta","Electron Candidates Eta",100, 0., 2.7);
00244         TH1F *hElectronEtaClass0 = new TH1F("hElectronEtaClass0","Electron Candidates Eta Class: 0, Barrel-Golden",100, 0., 2.7);
00245         TH1F *hElectronEtaClass1 = new TH1F("hElectronEtaClass1","Electron Candidates Eta Class: 1, Barrel-Big Brem",100, 0., 2.7);
00246         TH1F *hElectronEtaClass2 = new TH1F("hElectronEtaClass2","Electron Candidates Eta Class: 2, Barrel-Narrow",100, 0., 2.7);
00247         TH1F *hElectronEtaClass3 = new TH1F("hElectronEtaClass3","Electron Candidates Eta Class: 3, Barrel-Showering",100, 0., 2.7);
00248         TH1F *hElectronEtaClass4 = new TH1F("hElectronEtaClass4","Electron Candidates Eta Class: 4, Barrel-Cracks",100, 0., 2.7);
00249         TH1F *hElectronEtaClass10 = new TH1F("hElectronEtaClass10","Electron Candidates Eta Class: 0, Endcap-Golden",100, 0., 2.7);
00250         TH1F *hElectronEtaClass11 = new TH1F("hElectronEtaClass11","Electron Candidates Eta Class: 1, Endcap-Big Brem",100, 0., 2.7);
00251         TH1F *hElectronEtaClass12 = new TH1F("hElectronEtaClass12","Electron Candidates Eta Class: 2, Endcap-Narrow",100, 0., 2.7);
00252         TH1F *hElectronEtaClass13 = new TH1F("hElectronEtaClass13","Electron Candidates Eta Class: 3, Endcap-Showering",100, 0., 2.7);
00253 
00254         TH1F *hElectronL1Eta = new TH1F("hElectronL1Eta","Electron Candidates passing L1 Eta",100, 0., 2.7);
00255         TH1F *hElectronL1EtaClass0 = new TH1F("hElectronL1EtaClass0","Electron Candidates passing L1 Eta Class: 0, Barrel-Golden",100, 0., 2.7);
00256         TH1F *hElectronL1EtaClass1 = new TH1F("hElectronL1EtaClass1","Electron Candidates passing L1 Eta Class: 1, Barrel-Big Brem",100, 0., 2.7);
00257         TH1F *hElectronL1EtaClass2 = new TH1F("hElectronL1EtaClass2","Electron Candidates passing L1 Eta Class: 2, Barrel-Narrow",100, 0., 2.7);
00258         TH1F *hElectronL1EtaClass3 = new TH1F("hElectronL1EtaClass3","Electron Candidates passing L1 Eta Class: 3, Barrel-Showering",100, 0., 2.7);
00259         TH1F *hElectronL1EtaClass4 = new TH1F("hElectronL1EtaClass4","Electron Candidates passing L1 Eta Class: 4, Barrel-Cracks",100, 0., 2.7);
00260         TH1F *hElectronL1EtaClass10 = new TH1F("hElectronL1EtaClass10","Electron Candidates passing L1 Eta Class: 0, Barrel-Golden",100, 0., 2.7);
00261         TH1F *hElectronL1EtaClass11 = new TH1F("hElectronL1EtaClass11","Electron Candidates passing L1 Eta Class: 1, Barrel-Big Brem",100, 0., 2.7);
00262         TH1F *hElectronL1EtaClass12 = new TH1F("hElectronL1EtaClass12","Electron Candidates passing L1 Eta Class: 2, Barrel-Narrow",100, 0., 2.7);
00263         TH1F *hElectronL1EtaClass13 = new TH1F("hElectronL1EtaClass13","Electron Candidates passing L1 Eta Class: 3, Barrel-Showering",100, 0., 2.7);
00264 
00265         TH1F *hElectronHLTEta = new TH1F("hElectronHLTEta","Electron Candidates passing HLT Eta",100, 0., 2.7);
00266         TH1F *hElectronHLTEtaClass0 = new TH1F("hElectronHLTEtaClass0","Electron Candidates passing HTL Eta Class: 0, Barrel-Golden",100, 0., 2.7);
00267         TH1F *hElectronHLTEtaClass1 = new TH1F("hElectronHLTEtaClass1","Electron Candidates passing HLT Eta Class: 1, Barrel-Big Brem",100, 0., 2.7);
00268         TH1F *hElectronHLTEtaClass2 = new TH1F("hElectronHLTEtaClass2","Electron Candidates passing HLT Eta Class: 2, Barrel-Narrow",100, 0., 2.7);
00269         TH1F *hElectronHLTEtaClass3 = new TH1F("hElectronHLTEtaClass3","Electron Candidates passing HLT Eta Class: 3, Barrel-Showering",100, 0., 2.7);
00270         TH1F *hElectronHLTEtaClass4 = new TH1F("hElectronHLTEtaClass4","Electron Candidates passing HLT Eta Class: 4, Barrel-Cracks",100, 0., 2.7);
00271         TH1F *hElectronHLTEtaClass10 = new TH1F("hElectronHLTEtaClass10","Electron Candidates passing HLT Eta Class: 0, Barrel-Golden",100, 0., 2.7);
00272         TH1F *hElectronHLTEtaClass11 = new TH1F("hElectronHLTEtaClass11","Electron Candidates passing HLT Eta Class: 1, Barrel-Big Brem",100, 0., 2.7);
00273         TH1F *hElectronHLTEtaClass12 = new TH1F("hElectronHLTEtaClass12","Electron Candidates passing HLT Eta Class: 2, Barrel-Narrow",100, 0., 2.7);
00274         TH1F *hElectronHLTEtaClass13 = new TH1F("hElectronHLTEtaClass13","Electron Candidates passing HLT Eta Class: 3, Barrel-Showering",100, 0., 2.7);
00275 
00276         TH2F *h2ElectronERes = new TH2F("h2ElectronERes","Electron Candidates E resolution",110,0.,110.,100,-.5,.5);
00277         TH2F *h2ElectronEResClass0 = new TH2F("h2ElectronEResClass0","Electron Candidates E resolution Class: 0, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00278         TH2F *h2ElectronEResClass1 = new TH2F("h2ElectronEResClass1","Electron Candidates E resolution Class: 1, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00279         TH2F *h2ElectronEResClass2 = new TH2F("h2ElectronEResClass2","Electron Candidates E resolution Class: 2, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00280         TH2F *h2ElectronEResClass3 = new TH2F("h2ElectronEResClass3","Electron Candidates E resolution Class: 3, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00281         TH2F *h2ElectronEResClass4 = new TH2F("h2ElectronEResClass4","Electron Candidates E resolution Class: 4, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00282         TH2F *h2ElectronEResClass10 = new TH2F("h2ElectronEResClass10","Electron Candidates E resolution Class: 10, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00283         TH2F *h2ElectronEResClass11 = new TH2F("h2ElectronEResClass11","Electron Candidates E resolution Class: 11, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00284         TH2F *h2ElectronEResClass12 = new TH2F("h2ElectronEResClass12","Electron Candidates E resolution Class: 12, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00285         TH2F *h2ElectronEResClass13 = new TH2F("h2ElectronEResClass13","Electron Candidates E resolution Class: 13, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00286 
00287         TH2F *h2ElectronPRes = new TH2F("h2ElectronPRes","Electron Candidates E resolution",110, 0., 110.,100,-.5,.5);
00288         TH2F *h2ElectronPResClass0 = new TH2F("h2ElectronPResClass0","Electron Candidates E resolution Class: 0, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00289         TH2F *h2ElectronPResClass1 = new TH2F("h2ElectronPResClass1","Electron Candidates E resolution Class: 1, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00290         TH2F *h2ElectronPResClass2 = new TH2F("h2ElectronPResClass2","Electron Candidates E resolution Class: 2, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00291         TH2F *h2ElectronPResClass3 = new TH2F("h2ElectronPResClass3","Electron Candidates E resolution Class: 3, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00292         TH2F *h2ElectronPResClass4 = new TH2F("h2ElectronPResClass4","Electron Candidates E resolution Class: 4, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00293         TH2F *h2ElectronPResClass10 = new TH2F("h2ElectronPResClass10","Electron Candidates E resolution Class: 10, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00294         TH2F *h2ElectronPResClass11 = new TH2F("h2ElectronPResClass11","Electron Candidates E resolution Class: 11, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00295         TH2F *h2ElectronPResClass12 = new TH2F("h2ElectronPResClass12","Electron Candidates E resolution Class: 12, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00296         TH2F *h2ElectronPResClass13 = new TH2F("h2ElectronPResClass13","Electron Candidates E resolution Class: 13, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00297 
00298         TH2F *h2ElectronCombRes = new TH2F("h2ElectronCombRes","Electron Candidates E resolution",110, 0., 110.,100,-.5,.5);
00299         TH2F *h2ElectronCombResClass0 = new TH2F("h2ElectronCombResClass0","Electron Candidates E resolution Class: 0, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00300         TH2F *h2ElectronCombResClass1 = new TH2F("h2ElectronCombResClass1","Electron Candidates E resolution Class: 1, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00301         TH2F *h2ElectronCombResClass2 = new TH2F("h2ElectronCombResClass2","Electron Candidates E resolution Class: 2, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00302         TH2F *h2ElectronCombResClass3 = new TH2F("h2ElectronCombResClass3","Electron Candidates E resolution Class: 3, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00303         TH2F *h2ElectronCombResClass4 = new TH2F("h2ElectronCombResClass4","Electron Candidates E resolution Class: 4, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00304         TH2F *h2ElectronCombResClass10 = new TH2F("h2ElectronCombResClass10","Electron Candidates E resolution Class: 10, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00305         TH2F *h2ElectronCombResClass11 = new TH2F("h2ElectronCombResClass11","Electron Candidates E resolution Class: 11, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00306         TH2F *h2ElectronCombResClass12 = new TH2F("h2ElectronCombResClass12","Electron Candidates E resolution Class: 12, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00307         TH2F *h2ElectronCombResClass13 = new TH2F("h2ElectronCombResClass13","Electron Candidates E resolution Class: 13, Barrel-Golden",110, 0.,110.,100,-.5,.5);
00308 
00309 
00310         // To improve the speed set status for all branches to 0 and then include those needed
00311         //  T->SetBranchStatus("Event.*",0);
00312         //  T->SetBranchStatus("GeneratorEvent.*",0); 
00313         T->SetBranchStatus("GeantEvent.*",0);
00314 
00315         //T->SetBranchStatus("Event.caloRecHits_",0);
00316         T->SetBranchStatus("Event.allTrackHits_",0); 
00317 
00318         // T->SetBranchStatus("Event.emClusters_",0);  
00319         T->SetBranchStatus("Event.preshClusters_",0);  
00320         T->SetBranchStatus("Event.hadClusters_",0);
00321         T->SetBranchStatus("Event.vertices_",0);        
00322         T->SetBranchStatus("Event.muonCandidates_",0); 
00323         T->SetBranchStatus("Event.muonTracks_",0);
00324         T->SetBranchStatus("Event.jets_",0);
00325         T->SetBranchStatus("Event.met_",0);
00326 
00328         //   T->SetBranchStatus("Event.electronCandidates_",1);
00329         //   T->SetBranchStatus("Event.numberOfElectronCandidates_",1);
00330         //   T->SetBranchStatus("Event.tracks_",1);
00331         //   T->SetBranchStatus("Event.triggerInfo_",1);  
00332         // */ 
00333 
00334         // Set the branch addresses: first reconstructed event and then MC information (generator and GEANT event)
00335         //XANAEsdEvent *event = new XANAEsdEvent();  
00336         XANAEsdEvent *event = 0;  
00337         T->SetBranchAddress("Event.",&event);
00338 
00339         //XANAGeneratorEvent *generatorEvent = new XANAGeneratorEvent();
00340         XANAGeneratorEvent *generatorEvent = 0;
00341         T->SetBranchAddress("GeneratorEvent.",&generatorEvent);
00342 
00343         //XANAGeantEvent *geantEvent = new XANAGeantEvent();
00344         XANAGeantEvent *geantEvent = 0;
00345         T->SetBranchAddress("GeantEvent.",&geantEvent);
00346 
00347         // Initialisation of some variables (mainly counters and temporary)  
00348         int ne = 0, nTrigAccL1=0, nTrigAccHLT=0;
00349         TObjArray *electrons = 0, *superClusters = 0; 
00350         HepLorentzVector tmpElRec, tmpElGen, tmpElGenOrig;
00351         XANAElectronCandidate *tmpElectronCandidate;
00352 
00353         // Start main loop on all events
00354         Int_t nb = 0; 
00355         Int_t nevent = (Int_t)T->GetEntries();
00356         cout << "================== Total number of events: " << nevent << " ================" << endl;    
00357         //nevent = 100;
00358         cout << "================== Events to be analyzed : " << nevent << " ================" << endl;    
00359 
00360         Int_t ievent = 0;
00361         for (Int_t i=0; i<T->GetEntries() && ievent<nevent; i++) {
00362                 nb += T->GetEntry(i); 
00363 
00364                 if (i%100 == 0) cout << "================ Event: " << i << " ================" << endl;    
00365 
00366                 ne  = event->getNumberOfElectronCandidates(); electrons = event->getElectronCandidates();
00367                 superClusters = event->getSuperClusters();
00368 
00369                 // FIXME: problem with Super Clusters in endcap
00370                 for (int i3 = 0; i3 < ne; i3++) {
00371                   tmpElectronCandidate = (XANAElectronCandidate *) electrons->At(i3);
00372 
00373                   // cout << "Super Cluster Pointer = " << tmpElectronCandidate->getSuperCluster() << endl;
00374                   for (int isc = 0 ; isc < superClusters->GetLast() + 1; isc ++) {
00375                     XANASuperCluster * sc = (XANASuperCluster *) superClusters->At(isc);
00376                     if (tmpElectronCandidate->getSuperCluster()==0 &&
00377                         tmpElectronCandidate->getSuperClusterPosition() == sc->getPosition()) {
00378                       cout<<" !!! entering the super cluster bug correction "<<endl;
00379                       cout<<" !!! should not be the case if data >= XANA1_5_3 are used"<<endl;
00380                       // cout << " SC: Cand en, SC en, SS pos, brems: " << tmpElectronCandidate->getSuperClusterEnergy() << ", " <<
00381                       // sc->getEnergy() << ", " << sc->getPosition().eta() << " " 
00382                       // << sc->getNumberOfBrems() << endl;
00383                       float oldEnergy = tmpElectronCandidate->getSuperClusterEnergy();
00384                       tmpElectronCandidate->setSuperClusterEnergy(sc->getEnergy());
00385                       //cout << "new supercluster endcap: old energy " << oldEnergy << " new energy " << sc->getEnergy() << endl;
00386                       tmpElectronCandidate->setSuperCluster(sc);                        
00387                       //CC also update MomentumAtVertex 
00388                       Hep3Vector ptrack;
00389                       if (tmpElectronCandidate->getElectronTrack()->getAlgoName() == "GSF") {
00390                         XANAElectronGSFTrack *gsfetr = (XANAElectronGSFTrack *)(tmpElectronCandidate->getElectronTrack());
00391                         ptrack = gsfetr->getGSFMomentumAtVertexMode();                                            
00392                       } else {
00393                         ptrack = tmpElectronCandidate->getElectronTrack()->getMomentumAtVertex();
00394                       }
00395                       HepLorentzVector momentum(ptrack.x(), ptrack.y(), ptrack.z(), 0.);
00396                       momentum *= sc->getEnergy() / ptrack.mag();
00397                       momentum.setE(sc->getEnergy());
00398                       //cout << "new electron endcap: old momentum " << tmpElectronCandidate->getMomentumAtVertex() << " new momentum " << momentum << endl;
00399                       tmpElectronCandidate->setMomentumAtVertex(momentum);
00400                       //CC also update Eoverp
00401                       //cout << "new electron endcap: old E/p " << tmpElectronCandidate->getESuperClusterOverP() << " new E/p " << sc->getEnergy() / ptrack.mag() << endl;
00402                       tmpElectronCandidate->setMomentumAtVertex(momentum);
00403                       tmpElectronCandidate->setESuperClusterOverP(sc->getEnergy()/ptrack.mag());
00404                       //CC also update had/E
00405                       //cout << "new electron endcap: old h/e " << tmpElectronCandidate->getHadronicOverEm() << " new h/e " << sc->getHadronicOverEm()*oldEnergy/sc->getEnergy() << endl;
00406                       tmpElectronCandidate->setHadronicOverEm(sc->getHadronicOverEm()*oldEnergy/sc->getEnergy());
00407                     }                   
00408                   }
00409                 }
00410 
00411 
00412                 //****************************************************************************************
00413                 // part of code to unescale electron candidates
00414                 //  CC in case we do want to remove all corrections
00415 
00416                 if (!egammaEscaleCorrection) {    
00417                   //cout<< "unEscale electron candidates"<<endl;    
00418                  for (int i3 = 0; i3 < ne; i3++) {
00419                     tmpElectronCandidate = (XANAElectronCandidate *) electrons->At(i3);
00420                     // from federico
00421                     float newEnergy = tmpElectronCandidate->getSuperCluster()->getEnergy()/
00422                       tmpElectronCandidate->getSuperCluster()->getEnergyScaleFactor();
00423                     HepLorentzVector oldMomentum = tmpElectronCandidate->getMomentumAtVertex();
00424                     HepLorentzVector newMomentum(oldMomentum.x()*newEnergy/oldMomentum.t(),
00425                                                  oldMomentum.y()*newEnergy/oldMomentum.t(),
00426                                                  oldMomentum.z()*newEnergy/oldMomentum.t(),
00427                                                  newEnergy);
00428                     tmpElectronCandidate->setMomentumAtVertex(newMomentum);             
00429                   }
00430                 }
00431                 
00433                 // Trigger //
00435                 XANATriggerInfo triggerInfo = event->getTriggerInfo();
00436                 XANAnalysisTrigger trigger(&triggerInfo);
00437 
00438                 //if (ne) std::cout << "Electron candidate = " << ne << "   " << ((XANAElectronCandidate*)electrons->At(ne-1))->getSuperClusterEnergy() << "  -  L1 = " << trigger.getL1Decision() << "  -  HLT = " << trigger.getHLTDecision() << std::endl;
00439                 
00440                 Bool_t decL1  = trigger.getL1Decision();
00441                 Bool_t decHLT = trigger.getHLTDecision();
00442                 if (decL1  == true) nTrigAccL1++;
00443                 if (decHLT == true) nTrigAccHLT++;
00444 
00446                 // Preselection //
00448 
00449                 // 1. Simple Cuts
00450                 // --------------
00451 
00452                 // Ask for 2 electrons and 2 positrons all with pT > 3 GeV with no isolation requirement    
00453                 //XANAEventSelect eventSelect(event);
00454                 //vector<float> ptCut;
00455                 //ptCut.push_back(3.); 
00456                 //ptCut.push_back(3.); 
00457                 //if ((eventSelect.NumberOfElCandSelect( 2, -1, 0, ptCut)) && 
00458                 //              (eventSelect.NumberOfElCandSelect( 2, 1, 0, ptCut))) {
00459                 //      nPresAcc++;
00460                 //}  else continue;
00461 
00462 
00463                 // 2. Loose isolation
00464                 // ------------------
00465 
00466                 // Calculation isolation on all Electron candidate in the event   
00467                 XANAEvtIsolation isolation(event);
00468                 std::vector<XANAIsolation> isolationVector = isolation.getIsolationVector();
00469                 //std::vector<XANAIsolation>::const_iterator isoIter;
00470 
00472                 //for (isoIter = isolationVector.begin(); isoIter != isolationVector.end(); isoIter++){
00473                 //      hIsoNumberTracks->Fill((Axis_t) isoIter->getNumberTracks());
00474                 //      hIsoPtTracks->Fill((Axis_t) isoIter->getPtTracks());
00475                 //      hIsoNumberECinsideCone->Fill((Axis_t) isoIter->getNumberECinsideCone());
00476                 //      hIsoPtMax->Fill((Axis_t) isoIter->getPtMax());
00477                 //}       
00478 
00479                 // Very loose isolation (CASE 1): Ask for three isolated electrons with pTsum < 10 GeV inside a cone 
00480                 //if (isolation.getIsolationPtSum(10.,4)) nIsoAcc++;    
00481                 //else continue;
00482 
00483                 // Very loose isolation (CASE 2): Ask for three isolated electrons with pTmax < 5 GeV inside a cone 
00484                 //if (isolation.getIsolationPtMax(5.,4)) nIsoAcc++;        
00485 
00486                 // Associate reconstructed and generated electrons and make some analysis
00487                 XANAElectronRecGen anaMcEvent(event,generatorEvent);
00488                 map<XANAElectronCandidate *, XANAGeneratorParticle *> electronsRecGen = anaMcEvent.getElectronsRecGen();
00489                 //map<XANAElectronCandidate *, XANAGeneratorParticle *>::const_iterator iterEleRecGen;
00490 
00492                 // Electron preselection //
00494                 XANAElectronSelect electronSelector(electrons);
00495                 electronSelector.ElSelect_dphi(0.1);
00496                 TObjArray *selectedElectrons = electronSelector.getSelectedElectrons();
00497 
00499                 // Ambiguity resolving //
00501 
00502                 // single resolving    
00503                 //    XANAmbiguityResolve ambResolve(selectedElectrons,selectedElectrons->GetLast() + 1);
00504                 //    ambResolve.ResolveByEoverP();
00505 
00506                 // double resolving
00507 
00508                 XANAmbiguityResolve ambResolve1(selectedElectrons,selectedElectrons->GetLast() + 1);
00509                 ambResolve1.ResolveByEoverP();
00510 
00511                 XANAmbiguityResolve ambResolve(ambResolve1.getResolvedElcands(),ambResolve1.getResolvedElcands()->GetLast() + 1);
00512                 ambResolve.ResolveByEoverP();
00513 
00514                 XANAElectronClassification electronClasses(ambResolve.getResolvedElcands()); 
00515                 map<XANAElectronCandidate *, int>  elClassMap = electronClasses.getElectronClass();
00516                 map<XANAElectronCandidate *, int>::const_iterator elClassMapIter;
00517 
00518                 std::vector<float> el_Etrue;
00519                 std::vector<float> el_Euncorr;
00520                 std::vector<float> el_E;
00521                 std::vector<float> el_p;
00522                 std::vector<float> el_comb;
00523                 std::vector<float> el_etaTrue;
00524                 std::vector<float> el_EOverP; // not in ntuple for the moment
00525                 std::vector<float> el_class;  // not in ntuple for the moment
00526 
00527                 float uncorrEnergy = 0;
00528                 float energy = 0;
00530                 // Plots //
00532                 for (elClassMapIter = elClassMap.begin(); elClassMapIter != elClassMap.end(); elClassMapIter++) {
00533                         tmpElectronCandidate = elClassMapIter->first;
00534                         uncorrEnergy = tmpElectronCandidate->getSuperClusterEnergy();
00535                         if (elClassMapIter->second >= 0 && elClassMapIter->second < 5 && tmpElectronCandidate->getSuperCluster()) 
00536                                 uncorrEnergy /= tmpElectronCandidate->getSuperCluster()->getEnergyScaleFactor();
00537 
00538                         tmpElGen = ((electronsRecGen.find(tmpElectronCandidate))->second)->getMomentum();
00539 
00540                         Axis_t ratioE = uncorrEnergy/tmpElGen.e(); 
00541                         //Axis_t myEta  = tmpElectronCandidate->getSuperClusterPosition().eta();
00542                         Axis_t myEta  = tmpElGen.eta();
00543 
00544                         el_Etrue.push_back(tmpElGen.e());
00545                         el_Euncorr.push_back(uncorrEnergy);
00546                         el_etaTrue.push_back(tmpElGen.eta());
00547                         el_class.push_back(elClassMapIter->second);
00548 
00549                         hElectronEuncorrOverEtrue->Fill(ratioE);
00550                         if (elClassMapIter->second == 0) {
00551                                 hElectronEuncorrOverEtrueClass0->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEuncorrOverEtrueClass0->Fill(myEta, ratioE);
00552                         }
00553                         else if (elClassMapIter->second == 1) {
00554                                 hElectronEuncorrOverEtrueClass1->Fill(ratioE); if (ratioE > 0.8 && ratioE  < 2.) h2ElectronEuncorrOverEtrueClass1->Fill(myEta, ratioE);
00555                         }
00556                         else if (elClassMapIter->second == 2) {
00557                                 hElectronEuncorrOverEtrueClass2->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEuncorrOverEtrueClass2->Fill(myEta, ratioE);
00558                         }
00559                         else if (elClassMapIter->second == 3)  {
00560                                 hElectronEuncorrOverEtrueClass3->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEuncorrOverEtrueClass3->Fill(myEta, ratioE);
00561                         }
00562                         else if (elClassMapIter->second == 4)  {
00563                                 hElectronEuncorrOverEtrueClass4->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEuncorrOverEtrueClass4->Fill(myEta, ratioE);
00564                         }
00565                         else if (elClassMapIter->second == 10) {
00566                                 hElectronEuncorrOverEtrueClass10->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEuncorrOverEtrueClass10->Fill(myEta, ratioE);
00567                         }
00568                         else if (elClassMapIter->second == 11) {
00569                                 hElectronEuncorrOverEtrueClass11->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEuncorrOverEtrueClass11->Fill(myEta, ratioE);
00570                         }
00571                         else if (elClassMapIter->second == 12) {
00572                                 hElectronEuncorrOverEtrueClass12->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEuncorrOverEtrueClass12->Fill(myEta, ratioE);
00573                         }
00574                         else if (elClassMapIter->second == 13) {
00575                                 hElectronEuncorrOverEtrueClass13->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEuncorrOverEtrueClass13->Fill(myEta, ratioE);
00576                         }
00577                 }
00578 
00580                 // Electron corrections //
00582 
00583                 float corrEnergy;  
00584 
00585                 if (federicoEscaleCorrection) {
00586       
00587                 XANAElectronCorrection electronCorrection(elClassMap);
00588                 corrEnergy = 0.;  
00589 
00590                 for (elClassMapIter = elClassMap.begin(); elClassMapIter != elClassMap.end(); elClassMapIter++) {
00591                         tmpElectronCandidate = elClassMapIter->first;
00592                         energy = tmpElectronCandidate->getSuperClusterEnergy();
00593 
00594                         tmpElGen = ((electronsRecGen.find(tmpElectronCandidate))->second)->getMomentum();
00595 
00596                         Float_t momentum = ((XANAElectronGSFTrack*)tmpElectronCandidate->getElectronTrack())->getGSFMomentumAtVertexMode().mag();
00597                         Axis_t ratioE = energy/tmpElGen.e(); 
00598                         Axis_t ratioP = momentum/tmpElGen.e(); 
00599                         //Axis_t myEta  = tmpElectronCandidate->getSuperClusterPosition().eta();
00600                         Axis_t myEta  = tmpElGen.eta();
00601                         Axis_t ERes  = ( energy - tmpElGen.e() )/tmpElGen.e();
00602                         Axis_t PRes  = ( momentum - tmpElGen.e() )/tmpElGen.e();
00603 
00604                         el_E.push_back(energy);
00605                         el_p.push_back(momentum);
00606                         el_EOverP.push_back(energy/momentum);
00607 
00608                         hElectronEOverEtrue->Fill(ratioE);
00609                         hElectronPOverEtrue->Fill(ratioP);
00610                         h2ElectronERes->Fill(energy,ERes);
00611                         h2ElectronPRes->Fill(momentum,PRes);
00612                         if (elClassMapIter->second == 0) {
00613                                 hElectronEOverEtrueClass0->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEOverEtrueClass0->Fill(myEta, ratioE);
00614                                 hElectronPOverEtrueClass0->Fill(ratioP); if (ratioP > 0.8 && ratioP < 2.) h2ElectronPOverEtrueClass0->Fill(myEta, ratioE);
00615                                 h2ElectronEResClass0->Fill(energy,ERes);
00616                                 h2ElectronPResClass0->Fill(momentum,PRes);
00617                         }
00618                         else if (elClassMapIter->second == 1) {
00619                                 hElectronEOverEtrueClass1->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEOverEtrueClass1->Fill(myEta, ratioE);
00620                                 hElectronPOverEtrueClass1->Fill(ratioP); if (ratioP > 0.8 && ratioP < 2.) h2ElectronPOverEtrueClass1->Fill(myEta, ratioE);
00621                                 h2ElectronEResClass1->Fill(energy,ERes);
00622                                 h2ElectronPResClass1->Fill(momentum,PRes);
00623                         }
00624                         else if (elClassMapIter->second == 2) {
00625                                 hElectronEOverEtrueClass2->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEOverEtrueClass2->Fill(myEta, ratioE);
00626                                 hElectronPOverEtrueClass2->Fill(ratioP); if (ratioP > 0.8 && ratioP < 2.) h2ElectronPOverEtrueClass2->Fill(myEta, ratioE);
00627                                 h2ElectronEResClass2->Fill(energy,ERes);
00628                                 h2ElectronPResClass2->Fill(momentum,PRes);
00629                         }
00630                         else if (elClassMapIter->second == 3)  {
00631                                 hElectronEOverEtrueClass3->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEOverEtrueClass3->Fill(myEta, ratioE);
00632                                 hElectronPOverEtrueClass3->Fill(ratioP); if (ratioP > 0.8 && ratioP < 2.) h2ElectronPOverEtrueClass3->Fill(myEta, ratioE);
00633                                 h2ElectronEResClass3->Fill(energy,ERes);
00634                                 h2ElectronPResClass3->Fill(momentum,PRes);
00635                         }
00636                         else if (elClassMapIter->second == 4)  {
00637                                 hElectronEOverEtrueClass4->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEOverEtrueClass4->Fill(myEta, ratioE);
00638                                 hElectronPOverEtrueClass4->Fill(ratioP); if (ratioP > 0.8 && ratioP < 2.) h2ElectronPOverEtrueClass4->Fill(myEta, ratioE);
00639                                 h2ElectronEResClass4->Fill(energy,ERes);
00640                                 h2ElectronPResClass4->Fill(momentum,PRes);
00641                         }
00642                         else if (elClassMapIter->second == 10) {
00643                                 hElectronEOverEtrueClass10->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEOverEtrueClass10->Fill(myEta, ratioE);
00644                                 hElectronPOverEtrueClass10->Fill(ratioP); if (ratioP > 0.8 && ratioP < 2.) h2ElectronPOverEtrueClass10->Fill(myEta, ratioE);
00645                                 h2ElectronEResClass10->Fill(energy,ERes);
00646                                 h2ElectronPResClass10->Fill(momentum,PRes);
00647                         }
00648                         else if (elClassMapIter->second == 11) {
00649                                 hElectronEOverEtrueClass11->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEOverEtrueClass11->Fill(myEta, ratioE);
00650                                 hElectronPOverEtrueClass11->Fill(ratioP); if (ratioP > 0.8 && ratioP < 2.) h2ElectronPOverEtrueClass11->Fill(myEta, ratioE);
00651                                 h2ElectronEResClass11->Fill(energy,ERes);
00652                                 h2ElectronPResClass11->Fill(momentum,PRes);
00653                         }
00654                         else if (elClassMapIter->second == 12) {
00655                                 hElectronEOverEtrueClass12->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEOverEtrueClass12->Fill(myEta, ratioE);
00656                                 hElectronPOverEtrueClass12->Fill(ratioP); if (ratioP > 0.8 && ratioP < 2.) h2ElectronPOverEtrueClass12->Fill(myEta, ratioE);
00657                                 h2ElectronEResClass12->Fill(energy,ERes);
00658                                 h2ElectronPResClass12->Fill(momentum,PRes);
00659                         }
00660                         else if (elClassMapIter->second == 13) {
00661                                 hElectronEOverEtrueClass13->Fill(ratioE); if (ratioE > 0.8 && ratioE < 2.) h2ElectronEOverEtrueClass13->Fill(myEta, ratioE);
00662                                 hElectronPOverEtrueClass13->Fill(ratioP); if (ratioP > 0.8 && ratioP < 2.) h2ElectronPOverEtrueClass13->Fill(myEta, ratioE);
00663                                 h2ElectronEResClass13->Fill(energy,ERes);
00664                                 h2ElectronPResClass13->Fill(momentum,PRes);
00665                         }
00666                 }
00667 
00668                 }
00669                 
00671                 // Electron momentum calculation //
00673                 if (momentumCorrection) {
00674                 
00675                 XANAElectronMomentum electronMomentum(elClassMap);
00676 
00677                 for (elClassMapIter = elClassMap.begin(); elClassMapIter != elClassMap.end(); elClassMapIter++) {
00678                         tmpElectronCandidate = elClassMapIter->first;
00679 
00680                         tmpElGen = ((electronsRecGen.find(tmpElectronCandidate))->second)->getMomentum();
00681 
00682                         Float_t combination = tmpElectronCandidate->getMomentumAtVertex().t();
00683                         Axis_t ratioComb = combination/tmpElGen.e(); 
00684                         //Axis_t myEta  = tmpElectronCandidate->getSuperClusterPosition().eta();
00685                         Axis_t myEta  = tmpElGen.eta();
00686                         Axis_t myPt   = tmpElGen.vect().perp();
00687                         Axis_t CombRes  = ( energy - tmpElGen.e() )/tmpElGen.e();
00688 
00689                         hElectronCombOverEtrue->Fill(ratioComb);
00690                         hElectronEta->Fill(myEta);
00691                         hElectronPt->Fill(myPt);
00692 
00693                         h2ElectronCombRes->Fill(combination,CombRes);
00694                         
00695                         el_comb.push_back(combination);
00696 
00697                         if (decL1 ) hElectronL1Eta->Fill(myEta);
00698                         if (decHLT) hElectronHLTEta->Fill(myEta);
00699                         if (decL1 ) hElectronL1Pt->Fill(myPt);
00700                         if (decHLT) hElectronHLTPt->Fill(myPt);
00701                         if (elClassMapIter->second == 0) {
00702                                 hElectronCombOverEtrueClass0->Fill(ratioComb); if (ratioComb > 0.8 && ratioComb < 2.) h2ElectronCombOverEtrueClass0->Fill(myEta, ratioComb);
00703                                 hElectronEtaClass0->Fill(myEta);
00704                                 hElectronPtClass0->Fill(myPt);
00705                                 if (decL1 ) hElectronL1EtaClass0->Fill(myEta);
00706                                 if (decHLT) hElectronHLTEtaClass0->Fill(myEta);
00707                                 if (decL1 ) hElectronL1PtClass0->Fill(myPt);
00708                                 if (decHLT) hElectronHLTPtClass0->Fill(myPt);
00709                                 h2ElectronCombResClass0->Fill(combination,CombRes);
00710                         }
00711                         else if (elClassMapIter->second == 1) {
00712                                 hElectronCombOverEtrueClass1->Fill(ratioComb); if (ratioComb > 0.8 && ratioComb < 2.) h2ElectronCombOverEtrueClass1->Fill(myEta, ratioComb);
00713                                 hElectronEtaClass1->Fill(myEta);
00714                                 hElectronPtClass1->Fill(myPt);
00715                                 if (decL1 ) hElectronL1EtaClass1->Fill(myEta);
00716                                 if (decHLT) hElectronHLTEtaClass1->Fill(myEta);
00717                                 if (decL1 ) hElectronL1PtClass1->Fill(myPt);
00718                                 if (decHLT) hElectronHLTPtClass1->Fill(myPt);
00719                                 h2ElectronCombResClass1->Fill(combination,CombRes);
00720                         }
00721                         else if (elClassMapIter->second == 2) {
00722                                 hElectronCombOverEtrueClass2->Fill(ratioComb); if (ratioComb > 0.8 && ratioComb < 2.) h2ElectronCombOverEtrueClass2->Fill(myEta, ratioComb);
00723                                 hElectronEtaClass2->Fill(myEta);
00724                                 hElectronPtClass2->Fill(myPt);
00725                                 if (decL1 ) hElectronL1EtaClass2->Fill(myEta);
00726                                 if (decHLT) hElectronHLTEtaClass2->Fill(myEta);
00727                                 if (decL1 ) hElectronL1PtClass2->Fill(myPt);
00728                                 if (decHLT) hElectronHLTPtClass2->Fill(myPt);
00729                                 h2ElectronCombResClass2->Fill(combination,CombRes);
00730                         }
00731                         else if (elClassMapIter->second == 3)  {
00732                                 hElectronCombOverEtrueClass3->Fill(ratioComb); if (ratioComb > 0.8 && ratioComb < 2.) h2ElectronCombOverEtrueClass3->Fill(myEta, ratioComb);
00733                                 hElectronEtaClass3->Fill(myEta);
00734                                 hElectronPtClass3->Fill(myPt);
00735                                 if (decL1 ) hElectronL1EtaClass3->Fill(myEta);
00736                                 if (decHLT) hElectronHLTEtaClass3->Fill(myEta);
00737                                 if (decL1 ) hElectronL1PtClass3->Fill(myPt);
00738                                 if (decHLT) hElectronHLTPtClass3->Fill(myPt);
00739                                 h2ElectronCombResClass3->Fill(combination,CombRes);
00740                         }
00741                         else if (elClassMapIter->second == 4)  {
00742                                 hElectronCombOverEtrueClass4->Fill(ratioComb); if (ratioComb > 0.8 && ratioComb < 2.) h2ElectronCombOverEtrueClass4->Fill(myEta, ratioComb);
00743                                 hElectronEtaClass4->Fill(myEta);
00744                                 hElectronPtClass4->Fill(myPt);
00745                                 if (decL1 ) hElectronL1EtaClass4->Fill(myEta);
00746                                 if (decHLT) hElectronHLTEtaClass4->Fill(myEta);
00747                                 if (decL1 ) hElectronL1PtClass4->Fill(myPt);
00748                                 if (decHLT) hElectronHLTPtClass4->Fill(myPt);
00749                                 h2ElectronCombResClass4->Fill(combination,CombRes);
00750                         }
00751                         else if (elClassMapIter->second == 10) {
00752                                 hElectronCombOverEtrueClass10->Fill(ratioComb); if (ratioComb > 0.8 && ratioComb < 2.) h2ElectronCombOverEtrueClass10->Fill(myEta, ratioComb);
00753                                 hElectronEtaClass10->Fill(myEta);
00754                                 hElectronPtClass10->Fill(myPt);
00755                                 if (decL1 ) hElectronL1EtaClass10->Fill(myEta);
00756                                 if (decHLT) hElectronHLTEtaClass10->Fill(myEta);
00757                                 if (decL1 ) hElectronL1PtClass10->Fill(myPt);
00758                                 if (decHLT) hElectronHLTPtClass10->Fill(myPt);
00759                                 h2ElectronCombResClass10->Fill(combination,CombRes);
00760                         }
00761                         else if (elClassMapIter->second == 11) {
00762                                 hElectronCombOverEtrueClass11->Fill(ratioComb); if (ratioComb > 0.8 && ratioComb < 2.) h2ElectronCombOverEtrueClass11->Fill(myEta, ratioComb);
00763                                 hElectronEtaClass11->Fill(myEta);
00764                                 hElectronPtClass11->Fill(myPt);
00765                                 if (decL1 ) hElectronL1EtaClass11->Fill(myEta);
00766                                 if (decHLT) hElectronHLTEtaClass11->Fill(myEta);
00767                                 if (decL1 ) hElectronL1PtClass11->Fill(myPt);
00768                                 if (decHLT) hElectronHLTPtClass11->Fill(myPt);
00769                                 h2ElectronCombResClass11->Fill(combination,CombRes);
00770                         }
00771                         else if (elClassMapIter->second == 12) {
00772                                 hElectronCombOverEtrueClass12->Fill(ratioComb); if (ratioComb > 0.8 && ratioComb < 2.) h2ElectronCombOverEtrueClass12->Fill(myEta, ratioComb);
00773                                 hElectronEtaClass12->Fill(myEta);
00774                                 hElectronPtClass12->Fill(myPt);
00775                                 if (decL1 ) hElectronL1EtaClass12->Fill(myEta);
00776                                 if (decHLT) hElectronHLTEtaClass12->Fill(myEta);
00777                                 if (decL1 ) hElectronL1PtClass12->Fill(myPt);
00778                                 if (decHLT) hElectronHLTPtClass12->Fill(myPt);
00779                                 h2ElectronCombResClass12->Fill(combination,CombRes);
00780                         }
00781                         else if (elClassMapIter->second == 13) {
00782                                 hElectronCombOverEtrueClass13->Fill(ratioComb); if (ratioComb > 0.8 && ratioComb < 2.) h2ElectronCombOverEtrueClass13->Fill(myEta, ratioComb);
00783                                 hElectronEtaClass13->Fill(myEta);
00784                                 hElectronPtClass13->Fill(myPt);
00785                                 if (decL1 ) hElectronL1EtaClass13->Fill(myEta);
00786                                 if (decHLT) hElectronHLTEtaClass13->Fill(myEta);
00787                                 if (decL1 ) hElectronL1PtClass13->Fill(myPt);
00788                                 if (decHLT) hElectronHLTPtClass13->Fill(myPt);
00789                                 h2ElectronCombResClass13->Fill(combination,CombRes);
00790                         }
00791                 }
00792 
00793                 }
00794                 
00796                 // New plot strategy //
00798                 for (UInt_t idx=0; idx<elClassMap.size(); idx++) {
00799 
00800                         Axis_t EEtrue    = el_E[idx]/el_Etrue[idx];
00801                         Axis_t PEtrue    = el_p[idx]/el_Etrue[idx];
00802                         Axis_t combEtrue = el_comb[idx]/el_Etrue[idx];
00803 
00804                         h2ElectronEOverEtrueEP->Fill(el_EOverP[idx],EEtrue);    
00805                         h2ElectronPOverEtrueEP->Fill(el_EOverP[idx],PEtrue);    
00806                         h2ElectronCombOverEtrueEP->Fill(el_EOverP[idx],combEtrue);      
00807                         if (el_class[idx] == 0) {
00808                                 h2ElectronEOverEtrueEPClass0->Fill(el_EOverP[idx],EEtrue);      
00809                                 h2ElectronPOverEtrueEPClass0->Fill(el_EOverP[idx],PEtrue);      
00810                                 h2ElectronCombOverEtrueEPClass0->Fill(el_EOverP[idx],combEtrue);        
00811                         }
00812                         else if (el_class[idx] == 1) {
00813                                 h2ElectronEOverEtrueEPClass1->Fill(el_EOverP[idx],EEtrue);      
00814                                 h2ElectronPOverEtrueEPClass1->Fill(el_EOverP[idx],PEtrue);      
00815                                 h2ElectronCombOverEtrueEPClass1->Fill(el_EOverP[idx],combEtrue);        
00816                         }
00817                         else if (el_class[idx] == 2) {
00818                                 h2ElectronEOverEtrueEPClass2->Fill(el_EOverP[idx],EEtrue);      
00819                                 h2ElectronPOverEtrueEPClass2->Fill(el_EOverP[idx],PEtrue);      
00820                                 h2ElectronCombOverEtrueEPClass2->Fill(el_EOverP[idx],combEtrue);        
00821                         }
00822                         else if (el_class[idx] == 3)  {
00823                                 h2ElectronEOverEtrueEPClass3->Fill(el_EOverP[idx],EEtrue);      
00824                                 h2ElectronPOverEtrueEPClass3->Fill(el_EOverP[idx],PEtrue);      
00825                                 h2ElectronCombOverEtrueEPClass3->Fill(el_EOverP[idx],combEtrue);        
00826                         }
00827                         else if (el_class[idx] == 4)  {
00828                                 h2ElectronEOverEtrueEPClass4->Fill(el_EOverP[idx],EEtrue);      
00829                                 h2ElectronPOverEtrueEPClass4->Fill(el_EOverP[idx],PEtrue);      
00830                                 h2ElectronCombOverEtrueEPClass4->Fill(el_EOverP[idx],combEtrue);        
00831                         }
00832                         else if (el_class[idx] == 10) {
00833                                 h2ElectronEOverEtrueEPClass10->Fill(el_EOverP[idx],EEtrue);     
00834                                 h2ElectronPOverEtrueEPClass10->Fill(el_EOverP[idx],PEtrue);     
00835                                 h2ElectronCombOverEtrueEPClass10->Fill(el_EOverP[idx],combEtrue);       
00836                         }
00837                         else if (el_class[idx] == 11) {
00838                                 h2ElectronEOverEtrueEPClass11->Fill(el_EOverP[idx],EEtrue);     
00839                                 h2ElectronPOverEtrueEPClass11->Fill(el_EOverP[idx],PEtrue);     
00840                                 h2ElectronCombOverEtrueEPClass11->Fill(el_EOverP[idx],combEtrue);       
00841                         }
00842                         else if (el_class[idx] == 12) {
00843                                 h2ElectronEOverEtrueEPClass12->Fill(el_EOverP[idx],EEtrue);     
00844                                 h2ElectronPOverEtrueEPClass12->Fill(el_EOverP[idx],PEtrue);     
00845                                 h2ElectronCombOverEtrueEPClass12->Fill(el_EOverP[idx],combEtrue);       
00846                         }
00847                         else if (el_class[idx] == 13) {
00848                                 h2ElectronEOverEtrueEPClass13->Fill(el_EOverP[idx],EEtrue);     
00849                                 h2ElectronPOverEtrueEPClass13->Fill(el_EOverP[idx],PEtrue);     
00850                                 h2ElectronCombOverEtrueEPClass13->Fill(el_EOverP[idx],combEtrue);       
00851                         }
00852                 }
00853 
00854                 // Ntuple filling
00855                 for (unsigned int i=0; i<el_Etrue.size(); i++) {
00856                         ntu->Fill(ievent,el_Etrue.size(),i,el_Etrue[i],el_Euncorr[i],el_E[i],el_p[i],el_comb[i],el_etaTrue[i]);
00857                 }
00858                 ievent++;
00859                 event->clear(); 
00860                 generatorEvent->clear();
00861                 geantEvent->clear();
00862         }
00863         hFile->Write();
00864 
00865 
00866         cout << " -------------------------------------------------------------------------------" << endl;
00867         cout << "                                 ACCEPTANCES                                    " << endl;
00868         cout << "                           TOTAL NUMBER OF EVENTS = " << nevent << endl;
00869         cout << " -------------------------------------------------------------------------------" << endl;
00870         cout << "                      #EVENTS       RELATIVE ACC. (%)      APSOLUTE ACC. (%)        " << endl;
00871         cout << " -------------------------------------------------------------------------------" << endl;
00872         cout << " 1. TRIGGER (L1)    = \t" << nTrigAccL1       << "\t\t"   << 100.*nTrigAccL1/nevent 
00873                 << "\t\t\t" << 100.*nTrigAccL1/nevent << endl;
00874         cout << " 2. TRIGGER (HLT)   = \t" << nTrigAccHLT       << "\t\t"   << 100.*nTrigAccHLT/nevent 
00875                 << "\t\t\t" << 100.*nTrigAccHLT/nevent << endl;
00876         cout << " -------------------------------------------------------------------------------" << endl;  
00877 
00878         cout << nevent << " events and " << nb << " bytes read " << endl;  
00879         cout << endl;
00880 
00881         stopWatch.Stop();
00882         cout << "Time elapsed - CPU: " << stopWatch.CpuTime() <<
00883                 " real: " << stopWatch.RealTime() << endl;
00884 
00885 }


Generated on Thu Oct 27 21:59:48 2005 for XANADOO by doxygen 1.3.5