#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/XANAMcInfo/interface/XANAGeantTrack.h>
#include <XANADOO/XANAMcInfo/interface/XANAGeantVertex.h>
#include "TTree.h"
#include "TFile.h"
#include "TBranch.h"
#include "TClonesArray.h"
#include "TObjArray.h"
#include "TH1.h"
#include "TH2.h"
#include "TSystem.h"
#include "TROOT.h"
#include <string>
Include dependency graph for debugMCinfo.cpp:
Go to the source code of this file.
Namespaces | |
namespace | std |
Functions | |
int | main (int argc, char **argv) |
|
Definition at line 35 of file debugMCinfo.cpp. References XANAGeantEvent::clear, XANAGeneratorEvent::clear, XANAEsdEvent::clear, XANAGeantEvent::getGeantTracks, XANAGeantEvent::getGeantVertices, XANAGeantTrack::getGeneratorParticle, XANAGeantTrack::getMomentum, XANAGeantTrack::getMotherIndex, XANAGeantEvent::getNumberOfGeantTracks, XANAGeantEvent::getNumberOfGeantVertices, XANAGeantVertex::getNumberOfTracks, XANAGeantTrack::getPartId, XANAGeantVertex::getPosition, XANAGeantVertex::getTracks, and XANAGeneratorParticle::print.
00036 { 00037 // Connect to file generated 00038 TFile *f; 00039 if (argc==1) f = new TFile("h300eemm.root"); 00040 else f = new TFile(*++argv); 00041 00042 // Read Tree named "T" in memory. Tree pointer is assigned the same name 00043 TTree *T = (TTree*)f->Get("ESD"); 00044 00045 00046 // Reconstructed event 00047 XANAEsdEvent *event = 0; 00048 T->SetBranchAddress("Event",&event); 00049 00050 // MC information (generator and GEANT event) 00051 XANAGeneratorEvent *generatorEvent = new XANAGeneratorEvent(); 00052 TBranch *branchGeneratorEvent = T->GetBranch("GeneratorEvent"); 00053 branchGeneratorEvent->SetAddress(&generatorEvent); 00054 00055 XANAGeantEvent *geantEvent = new XANAGeantEvent(); 00056 TBranch *branchGeantEvent = T->GetBranch("GeantEvent"); 00057 branchGeantEvent->SetAddress(&geantEvent); 00058 00059 Short_t mc_ngt = 0, mc_ngv = 0; 00060 00061 TFile *fout = new TFile("debugMC.root","RECREATE"); 00062 TH2F *h_xy = new TH2F("x-y view","x-y view",400,-200.,200.,400,-200.,200.); 00063 TH2F *h_rz = new TH2F("r-z view","r-z view",800,-400.,400.,200,0.,200.); 00064 TH1F *h_r = new TH1F("r","r",200,0.,200.); 00065 00066 // Start main loop on all events 00067 Int_t nb = 0; 00068 Int_t nevent = (Int_t)T->GetEntries(); 00069 cout << "Going to read " << nevent << " events" << endl; 00070 for (Int_t i=0; i<nevent; i++) { 00071 nb += T->GetEntry(i); 00072 00073 cout << "================ Event: " << i << " ================" << endl; 00074 00075 00076 // generator event 00077 cout << "--> new generator event" << endl; 00078 cout << endl; 00079 00080 // GEANT event 00081 mc_ngt = geantEvent->getNumberOfGeantTracks(); 00082 mc_ngv = geantEvent->getNumberOfGeantVertices(); 00083 cout << "--> new GEANT event" << endl; 00084 cout << " num of Geant tracks = " << mc_ngt << endl; 00085 cout << " num of Geant vertices = " << mc_ngv << endl; 00086 cout << " tracks ( piD --> momentum, mother index ):" << endl; 00087 00088 XANAGeantTrack *geantTrack = 0; 00089 for (Int_t ig=0; ig<mc_ngt; ig++) { 00090 geantTrack = (XANAGeantTrack*)geantEvent->getGeantTracks()->At(ig); 00091 Int_t pID = geantTrack->getPartId(); 00092 Int_t mother = geantTrack->getMotherIndex(); 00093 cout << pID << " --> " << geantTrack->getMomentum() << ", " << mother<< endl; 00094 XANAGeneratorParticle *genPart = geantTrack->getGeneratorParticle(); 00095 if (genPart) { 00096 cout << " Parent generator particle " << genPart << endl; 00097 genPart->print(); 00098 } 00099 } 00100 00101 gROOT->SetStyle("Plain"); 00102 // impact point histos 00103 for (Int_t ig=0; ig<mc_ngv; ig++) { 00104 XANAGeantVertex *geantVertex = (XANAGeantVertex*)geantEvent->getGeantVertices()->At(ig); 00105 Int_t mc_not = geantVertex->getNumberOfTracks(); 00106 for (Int_t ig=0; ig<mc_not; ig++) { 00107 XANAGeantTrack *geantTrack = (XANAGeantTrack*)geantVertex->getTracks()->At(ig); 00108 // cout << geantTrack->getPartId() << endl; 00109 if( geantTrack->getPartId() == -103) { 00110 Float_t x = geantVertex->getPosition().x(); 00111 Float_t y = geantVertex->getPosition().y(); 00112 Float_t z = geantVertex->getPosition().z(); 00113 if (z<275) { 00114 h_xy->Fill(x,y); 00115 h_rz->Fill(z,sqrt(x*x+y*y)); 00116 h_r->Fill(sqrt(x*x+y*y)); 00117 } 00118 } 00119 } 00120 } 00121 00122 00123 event->clear(); 00124 generatorEvent->clear(); 00125 geantEvent->clear(); 00126 } 00127 00128 cout << endl; 00129 cout << nevent << " events and " << nb << " bytes read " << endl; 00130 cout << endl; 00131 00132 fout->Write(); 00133 fout->Close(); 00134 00135 f->Close(); 00136 } |