#include <XANADOO/domain/interface/XANAEsdEvent.h>
#include <XANADOO/XANAClusters/interface/XANACluster.h>
#include <XANADOO/XANAClusters/interface/XANACaloRecHit.h>
#include <XANADOO/XANAClusters/interface/XANAEmCluster.h>
#include <XANADOO/XANAClusters/interface/XANASuperCluster.h>
#include <XANADOO/XANAClusters/interface/XANAHadCluster.h>
#include <XANADOO/XANATracks/interface/XANATrack.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/XANAElectronSeed.h>
#include <XANADOO/XANAMuons/interface/XANAMuonCandidate.h>
#include <XANADOO/XANATriggerInfo/interface/XANATriggerInfo.h>
#include <XANADOO/XANAJets/interface/XANAJet.h>
#include <XANADOO/XANAGeometry/interface/XANAEcalGeometry.h>
#include "TTree.h"
#include "TBits.h"
#include "TObjectTable.h"
#include "TFile.h"
#include "TBranch.h"
#include "TClonesArray.h"
#include "TObjArray.h"
#include "TH1.h"
#include "TH2.h"
#include "TSystem.h"
#include "TChain.h"
#include <string>
Include dependency graph for saturFamos.cpp:
Go to the source code of this file.
Functions | |
int | main (int argc, char **argv) |
|
Definition at line 38 of file saturFamos.cpp. References XANAGeantEvent::clear(), XANAGeneratorEvent::clear(), XANAEsdEvent::clear(), clusters, electrons, electronTracks, genpart, XANAEsdEvent::getElectronCandidates(), XANAEsdEvent::getElectronTracks(), XANAEsdEvent::getEmClusterHits(), XANAEsdEvent::getEmClusters(), XANASuperCluster::getEnergyScaleFactor(), XANAEsdEvent::getHadClusters(), XANAGeneratorParticle::getMomentum(), XANAEsdEvent::getMuonCandidates(), XANAEsdEvent::getNumberOfElectronCandidates(), XANAEsdEvent::getNumberOfElectronTracks(), XANAEsdEvent::getNumberOfEmClusters(), XANAEsdEvent::getNumberOfHadClusters(), XANAEsdEvent::getNumberOfMuonCandidates(), XANAGeneratorEvent::getNumberOfParticles(), XANAGeneratorEvent::getNumberOfPileupParticles(), XANAEsdEvent::getNumberOfPreshClusters(), XANAGeneratorEvent::getNumberOfSignalParticles(), XANAGeneratorEvent::getNumberOfStablePileupParticles(), XANAGeneratorEvent::getNumberOfStableSignalParticles(), XANAEsdEvent::getNumberOfSuperClusters(), XANAEsdEvent::getNumberOfTrackHits(), XANAEsdEvent::getNumberOfTracks(), XANAEsdEvent::getNumberOfVertexTracks(), XANAEsdEvent::getNumberOfVertices(), XANAGeneratorEvent::getParticles(), XANAGeneratorParticle::getPartId(), XANASuperCluster::getPosition(), XANAEsdEvent::getPreshClusters(), XANAElectronCandidate::getPt(), XANASuperCluster::getSum1(), XANASuperCluster::getSum4(), XANASuperCluster::getSum9(), XANAElectronCandidate::getSuperCluster(), XANAElectronCandidate::getSuperClusterEnergy(), XANAEsdEvent::getSuperClusters(), XANAEsdEvent::getTracks(), XANAEsdEvent::getVertices(), hadClusters, hits, muons, preshClusters, superClusters, tracks, and vertices.
00039 { 00040 // version TChain 00041 TChain *T = new TChain("ESD"); 00042 T->Add("/data/scratch/collard/Production_xana151/single/famos/xSingleE4000.root"); 00043 /* 00044 T->Add("/data/scratch/collard/Production_xana151/single/famos/xSinglePt50.root"); 00045 T->Add("/data/scratch/collard/Production_xana151/single/famos/xSinglePt150.root"); 00046 T->Add("/data/scratch/collard/Production_xana151/single/famos/xSinglePt500.root"); 00047 T->Add("/data/scratch/collard/Production_xana151/single/famos/xSinglePt1500.root"); 00048 T->Add("/data/scratch/collard/Production_xana151/single/famos/xSinglePt2500.root"); 00049 */ 00050 00051 // example of how to suppress reading of branches 00052 // has to be put before setting the branch addresses! 00053 // T->SetBranchStatus("GeantEvent*",0); 00054 00055 // Reconstructed event 00056 XANAEsdEvent *event = new XANAEsdEvent(); 00057 T->SetBranchAddress("Event.",&event); 00058 // MC information (generator and GEANT event) 00059 XANAGeneratorEvent *generatorEvent = new XANAGeneratorEvent(); 00060 T->SetBranchAddress("GeneratorEvent.",&generatorEvent); 00061 XANAGeantEvent *geantEvent = new XANAGeantEvent(); 00062 T->SetBranchAddress("GeantEvent.",&geantEvent); 00063 00064 // Definitions 00065 Short_t nc = 0, nh = 0, nhc = 0, ns = 0, npc = 0, nt = 0, nv = 0, nvt = 0; 00066 Short_t ne = 0, nm = 0, nelt = 0 ; 00067 00068 TObjArray *clusters = 0; 00069 TObjArray *hadClusters = 0; 00070 TObjArray *superClusters = 0; 00071 TObjArray *preshClusters = 0; 00072 TRefArray *hits = 0; 00073 TObjArray *tracks = 0; 00074 TObjArray *vertices = 0; 00075 TObjArray *electrons = 0; 00076 TObjArray *electronTracks = 0; 00077 TObjArray *muons = 0; 00078 00079 Short_t mc_np = 0, mc_nsp = 0, mc_nssp = 0, mc_npp = 0, mc_nspp = 0; 00080 00081 // Histo 00082 // 00083 // 00084 TH1F *histo1001 = new TH1F("histo1001","E rec / E true ",100,0.8,1.05); 00085 00086 TH2F *histo1002 = new TH2F("histo1002","S1 vs Red5 (all)",100,0.,350.,150,0.,4500.); 00087 TH2F *histo1003 = new TH2F("histo1003","S1 vs Red5 (S1<1.7TeV)",100,0.,175.,150,0.,1700.); 00088 TH1F *histo1004 = new TH1F("histo1004","E_SC corr / E_SC ",100,0.5,1.5); 00089 00090 TH1F *histo1011 = new TH1F("histo1011","S1/Red5 bin Red5:0-20",50,0.,24.0); 00091 TH1F *histo1012 = new TH1F("histo1012","S1/Red5 bin Red5:20-30",50,0.,24.0); 00092 TH1F *histo1013 = new TH1F("histo1013","S1/Red5 bin Red5:30-40",50,0.,24.0); 00093 TH1F *histo1014 = new TH1F("histo1014","S1/Red5 bin Red5:40-50",50,0.,24.0); 00094 TH1F *histo1015 = new TH1F("histo1015","S1/Red5 bin Red5:50-60",50,0.,24.0); 00095 TH1F *histo1016 = new TH1F("histo1016","S1/Red5 bin Red5:60-70",50,0.,24.0); 00096 TH1F *histo1017 = new TH1F("histo1017","S1/Red5 bin Red5:70-80",50,0.,24.0); 00097 TH1F *histo1018 = new TH1F("histo1018","S1/Red5 bin Red5:80-90",50,0.,24.0); 00098 TH1F *histo1019 = new TH1F("histo1019","S1/Red5 bin Red5:90-100",50,0.,24.0); 00099 TH1F *histo1020 = new TH1F("histo1020","S1/Red5 bin Red5:100-110",50,0.,24.0); 00100 TH1F *histo1021 = new TH1F("histo1021","S1/Red5 bin Red5:110-120",50,0.,24.0); 00101 00102 TH1F *histo1111 = new TH1F("histo1111","S1 bin Red5:0-20",50,0.,1700.0); 00103 TH1F *histo1112 = new TH1F("histo1112","S1 bin Red5:20-30",50,0.,1700.0); 00104 TH1F *histo1113 = new TH1F("histo1113","S1 bin Red5:30-40",50,0.,1700.0); 00105 TH1F *histo1114 = new TH1F("histo1114","S1 bin Red5:40-50",50,0.,1700.0); 00106 TH1F *histo1115 = new TH1F("histo1115","S1 bin Red5:50-60",50,0.,1700.0); 00107 TH1F *histo1116 = new TH1F("histo1116","S1 bin Red5:60-70",50,0.,1700.0); 00108 TH1F *histo1117 = new TH1F("histo1117","S1 bin Red5:70-80",50,0.,1700.0); 00109 TH1F *histo1118 = new TH1F("histo1118","S1 bin Red5:80-90",50,0.,1700.0); 00110 TH1F *histo1119 = new TH1F("histo1119","S1 bin Red5:90-100",50,0.,1700.0); 00111 TH1F *histo1120 = new TH1F("histo1120","S1 bin Red5:100-110",50,0.,1700.0); 00112 TH1F *histo1121 = new TH1F("histo1121","S1 bin Red5:110-120",50,0.,1700.0); 00113 00114 00115 00116 // Start main loop on all events 00117 Int_t nb = 0; 00118 Int_t nevent = (Int_t)T->GetEntries(); 00119 00120 // nevent =2; 00121 00122 cout << "Nombre d entrees a traiter : " << nevent << endl; 00123 for (Int_t i=0; i<nevent; i++) { 00124 nb += T->GetEntry(i); 00125 00126 00127 // generator event 00128 mc_np = generatorEvent->getNumberOfParticles(); 00129 mc_nsp = generatorEvent->getNumberOfSignalParticles(); 00130 mc_nssp = generatorEvent->getNumberOfStableSignalParticles(); 00131 mc_npp = generatorEvent->getNumberOfPileupParticles(); 00132 mc_nspp = generatorEvent->getNumberOfStablePileupParticles(); 00133 TObjArray *genpart = 0; genpart=generatorEvent->getParticles(); 00134 int ilink=0; int first =1; 00135 for (int gp=0;gp<mc_np;gp++) { 00136 XANAGeneratorParticle *gpart = (XANAGeneratorParticle *)((*genpart)[gp]); 00137 if (gpart->getPartId()==11 && first==1) 00138 { 00139 ilink=gp; 00140 first=2; 00141 } 00142 } 00143 XANAGeneratorParticle *gElec = (XANAGeneratorParticle *)((*genpart)[ilink]); 00144 00145 00146 // Reconstructed event 00147 00148 nc = event->getNumberOfEmClusters(); clusters = event->getEmClusters(); 00149 nh = event->getNumberOfTrackHits(); hits = event->getEmClusterHits(); 00150 nhc = event->getNumberOfHadClusters(); hadClusters = event->getHadClusters(); 00151 ns = event->getNumberOfSuperClusters(); superClusters = event->getSuperClusters(); 00152 npc = event->getNumberOfPreshClusters(); preshClusters = event->getPreshClusters(); 00153 nt = event->getNumberOfTracks(); tracks = event->getTracks(); 00154 nv = event->getNumberOfVertices(); vertices = event->getVertices(); 00155 nvt = event->getNumberOfVertexTracks(); 00156 ne = event->getNumberOfElectronCandidates(); electrons = event->getElectronCandidates(); 00157 nm = event->getNumberOfMuonCandidates(); muons = event->getMuonCandidates(); 00158 nelt = event->getNumberOfElectronTracks(); 00159 electronTracks = event->getElectronTracks(); 00160 00161 00162 // electrons 00163 Int_t i_ze_el=-1; 00164 Float_t etmax=0.; 00165 00166 for (Int_t ie=0; ie<ne; ie++) { 00167 XANAElectronCandidate *elec = (XANAElectronCandidate*)((*electrons)[ie]); 00168 if ( (fabs( elec->getSuperCluster()->getPosition().eta() ) < 1.4442 || 00169 fabs( elec->getSuperCluster()->getPosition().eta() ) > 1.566 ) 00170 && elec->getPt()/elec->getSuperCluster()->getEnergyScaleFactor() > etmax) 00171 { 00172 i_ze_el=ie; 00173 etmax=elec->getPt()/elec->getSuperCluster()->getEnergyScaleFactor(); 00174 } 00175 } 00176 00177 if (i_ze_el>-1) 00178 { 00179 XANAElectronCandidate *rElec = (XANAElectronCandidate*)((*electrons)[i_ze_el]); 00180 00181 00182 // E_rec/E_true 00183 float E_true = gElec->getMomentum().e(); 00184 float E_rec = rElec->getSuperClusterEnergy()/rElec->getSuperCluster()->getEnergyScaleFactor(); 00185 00186 histo1001->Fill(E_rec/E_true); 00187 00188 // S1 vs Red5 00189 float S1 = rElec->getSuperCluster()->getSum1(); 00190 float Red5= rElec->getSuperCluster()->getSum9()-rElec->getSuperCluster()->getSum4(); 00191 00192 00193 histo1002->Fill(Red5,S1); 00194 if (S1<1700) 00195 { 00196 00197 histo1003->Fill(Red5,S1); 00198 if (0<Red5 && Red5<=20) { histo1011->Fill(S1/Red5); histo1111->Fill(S1); } 00199 else if (20<Red5 && Red5<=30) { histo1012->Fill(S1/Red5); histo1112->Fill(S1); } 00200 else if (30<Red5 && Red5<=40) { histo1013->Fill(S1/Red5); histo1113->Fill(S1); } 00201 else if (40<Red5 && Red5<=50) { histo1014->Fill(S1/Red5); histo1114->Fill(S1); } 00202 else if (50<Red5 && Red5<=60) { histo1015->Fill(S1/Red5); histo1115->Fill(S1); } 00203 else if (60<Red5 && Red5<=70) { histo1016->Fill(S1/Red5); histo1116->Fill(S1); } 00204 else if (70<Red5 && Red5<=80) { histo1017->Fill(S1/Red5); histo1117->Fill(S1); } 00205 else if (80<Red5 && Red5<=90) { histo1018->Fill(S1/Red5); histo1118->Fill(S1); } 00206 else if (90<Red5 && Red5<=100) { histo1019->Fill(S1/Red5); histo1119->Fill(S1); } 00207 else if (100<Red5 && Red5<=110) { histo1020->Fill(S1/Red5); histo1120->Fill(S1); } 00208 else if (110<Red5 && Red5<=120) { histo1011->Fill(S1/Red5); histo1121->Fill(S1); } 00209 } 00210 else 00211 { 00212 // verif de la saturation 00213 float NewS1= 10.9*Red5; 00214 // float NewS1= 11.0*Red5; 00215 float NewErec= E_rec -S1 +NewS1; 00216 histo1004->Fill(NewErec/E_rec); 00217 } 00218 00219 00220 00221 } 00222 00223 00224 event->clear(); 00225 generatorEvent->clear(); 00226 geantEvent->clear(); 00227 } 00228 00229 // f.Close(); 00230 // 00231 TFile *filehisto = new TFile("Saturation.root","RECREATE"); 00232 00233 histo1001->Write(); 00234 histo1002->Write(); 00235 histo1003->Write(); 00236 histo1004->Write(); 00237 00238 histo1011->Write(); 00239 histo1012->Write(); 00240 histo1013->Write(); 00241 histo1014->Write(); 00242 histo1015->Write(); 00243 histo1016->Write(); 00244 histo1017->Write(); 00245 histo1018->Write(); 00246 histo1019->Write(); 00247 histo1020->Write(); 00248 histo1021->Write(); 00249 histo1111->Write(); 00250 histo1112->Write(); 00251 histo1113->Write(); 00252 histo1114->Write(); 00253 histo1115->Write(); 00254 histo1116->Write(); 00255 histo1117->Write(); 00256 histo1118->Write(); 00257 histo1119->Write(); 00258 histo1120->Write(); 00259 histo1121->Write(); 00260 00261 00262 filehisto->Close(); 00263 00264 00265 } |