#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/XANATracks/interface/XANATrackHit.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 "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 "TStyle.h"#include "TCanvas.h"#include "TGraph.h"#include "TSelector.h"#include "TApplication.h"#include <string>Include dependency graph for readTrackhit.cpp:

Go to the source code of this file.
Functions | |
| int | main (int argc, char **argv) |
|
||||||||||||
|
Definition at line 39 of file readTrackhit.cpp. References XANAEsdEvent::clear, XANAEsdEvent::getElectronCandidates, XANAElectronCandidate::getElectronTrack, XANAEsdEvent::getElectronTracks, XANAEsdEvent::getEleTrackHits, XANATrackHit::getHitPosition, XANATrack::getMomentumAtFirstPoint, XANATrack::getMomentumAtLastPoint, XANAEsdEvent::getNumberOfElectronCandidates, XANAEsdEvent::getNumberOfEleTrackHits, XANATrack::getNumberOfHits, XANAEsdEvent::getNumberOfTrackHits, XANAEsdEvent::getNumberOfTracks, XANATrack::getPositionAtFirstPoint, XANATrack::getPositionAtLastPoint, XANAEsdEvent::getTrackHits, XANAEsdEvent::getTracks, XANATrackHit::getUpdatedMomentum, and XANATrackHit::getUpdatedPosition.
00040 {
00041 // Connect to file generated
00042 TFile *f;
00043 if (argc==1) f = new TFile("./SE04_E25_Pall_PT30_step1.root");
00044 else f = new TFile(*++argv);
00045
00046 // Read Tree named "T" in memory. Tree pointer is assigned the same name
00047 TTree *T = (TTree*)f->Get("ESD");
00048
00049 // Reconstructed event
00050 XANAEsdEvent *event = 0;
00051 T->SetBranchAddress("Event",&event);
00052 Short_t ne = 0, nt=0, nth =0, neth =0;
00053 TObjArray *tracks = 0;
00054 TObjArray *trackhits = 0;
00055 TObjArray *electrons = 0;
00056 TObjArray *electronTracks = 0;
00057 TObjArray *electronTrackhits = 0;
00058
00059 // Start main loop on all events
00060 Int_t nb = 0;
00061 Int_t nevent = (Int_t)T->GetEntries();
00062 for (Int_t i=0; i<nevent; i++) {
00063 nb += T->GetEntry(i);
00064
00065 cout << "================ Event: " << i << " ================" << endl;
00066
00067 // Reconstructed event
00068 cout << "Reconstructed:" ;
00069
00070 tracks = event->getTracks();
00071 nt = event->getNumberOfTracks();
00072 trackhits = event->getTrackHits();
00073 nth = event->getNumberOfTrackHits();
00074 electrons = event->getElectronCandidates();
00075 ne = event->getNumberOfElectronCandidates();
00076 electronTracks = event->getElectronTracks();
00077 electronTrackhits = event->getEleTrackHits();
00078 neth = event->getNumberOfEleTrackHits();
00079
00080 // tracks
00081 XANATrack *tra;
00082 if ( nt != 0 ){
00083 cout << "tracks number: " << nt << endl;
00084
00085 // loop on tracks
00086 int hitcount =0;
00087 for (int it =0; it < nt; it++){
00088 tra = (XANATrack*)((*tracks)[it]);
00089
00090 cout << "track " << it << ": number of hits = "<< tra->getNumberOfHits() << endl;
00091
00092 for (int ithit = hitcount; ithit < (tra->getNumberOfHits() + hitcount); ithit++){
00093 XANATrackHit *trahit = (XANATrackHit*)((*trackhits)[ithit]);
00094
00095 cout << "standard track: hit number " << ithit << endl;
00096 cout << "st: new hit" << endl;
00097 cout << trahit->getHitPosition().x() << endl;
00098 cout << trahit->getHitPosition().y() << endl;
00099 cout << trahit->getHitPosition().z() << endl;
00100 cout << "st: new updated state: position" << endl;
00101 cout << trahit->getUpdatedPosition().x() << endl;
00102 cout << trahit->getUpdatedPosition().y() << endl;
00103 cout << trahit->getUpdatedPosition().z() << endl;
00104 cout << "st: new updated state: momentum" << endl;
00105 cout << trahit->getUpdatedMomentum().x() << endl;
00106 cout << trahit->getUpdatedMomentum().y() << endl;
00107 cout << trahit->getUpdatedMomentum().z() << endl;
00108
00109 // checking first and last hit
00110 if ( ithit == hitcount){
00111 cout << "standard" << endl;
00112 cout << "position" << endl;
00113 cout << "first hit, x" << trahit->getUpdatedPosition().x() << endl;
00114 cout << "first hit, y" << trahit->getUpdatedPosition().y() << endl;
00115 cout << "first hit, z" << trahit->getUpdatedPosition().z() << endl;
00116 cout << "momentum" << endl;
00117 cout << "first hit, px" << trahit->getUpdatedMomentum().x() << endl;
00118 cout << "first hit, py" << trahit->getUpdatedMomentum().y() << endl;
00119 cout << "first hit, pz" << trahit->getUpdatedMomentum().z() << endl;
00120 }
00121 if ( ithit == (tra->getNumberOfHits() + hitcount -1)){
00122 cout << "position" << endl;
00123 cout << "last hit, x" << trahit->getUpdatedPosition().x() << endl;
00124 cout << "last hit, y" << trahit->getUpdatedPosition().y() << endl;
00125 cout << "last hit, z" << trahit->getUpdatedPosition().z() << endl;
00126 cout << "momenutm" << endl;
00127 cout << "last hit, px" << trahit->getUpdatedMomentum().x() << endl;
00128 cout << "last hit, py" << trahit->getUpdatedMomentum().y() << endl;
00129 cout << "last hit, pz" << trahit->getUpdatedMomentum().z() << endl;
00130 }
00131 } // end loop over hits
00132
00133 // checking first and last hit
00134 cout << "standard method:" << endl;
00135 cout << "position" << endl;
00136 cout << "first hit, x" << tra->getPositionAtFirstPoint().x() << endl;
00137 cout << "first hit, y" << tra->getPositionAtFirstPoint().y() << endl;
00138 cout << "first hit, z" << tra->getPositionAtFirstPoint().z() << endl;
00139 cout << "last hit, x" << tra->getPositionAtLastPoint().x() << endl;
00140 cout << "last hit, y" << tra->getPositionAtLastPoint().y() << endl;
00141 cout << "last hit, z" << tra->getPositionAtLastPoint().z() << endl;
00142 cout << "momenutm" << endl;
00143 cout << "first hit, px" << tra->getMomentumAtFirstPoint().x() << endl;
00144 cout << "first hit, py" << tra->getMomentumAtFirstPoint().y() << endl;
00145 cout << "first hit, pz" << tra->getMomentumAtFirstPoint().z() << endl;
00146 cout << "last hit, px" << tra->getMomentumAtLastPoint().x() << endl;
00147 cout << "last hit, py" << tra->getMomentumAtLastPoint().y() << endl;
00148 cout << "last hit, pz" << tra->getMomentumAtLastPoint().z() << endl;
00149
00150
00151 hitcount = hitcount + tra->getNumberOfHits();
00152 } // end loop on tracks
00153 } // checking tracks
00154
00155
00156 // electrons
00157 XANAElectronTrack *eletra;
00158 int elehitcount =0;
00159
00160 for (Int_t ie=0; ie<ne; ie++) {
00161 XANAElectronCandidate *elec = (XANAElectronCandidate*)((*electrons)[ie]);
00162 cout << "new electron candidate : " << elec << endl;
00163
00164 if ( elec->getElectronTrack() ){
00165 eletra = elec->getElectronTrack();
00166
00167 cout << "new electron track: number of hits = "<< eletra->getNumberOfHits() << endl;
00168
00169 // loop on all elec track hits
00170 for (int eleithit = elehitcount; eleithit < (eletra->getNumberOfHits() + elehitcount); eleithit++){
00171 XANATrackHit *eletrahit = (XANATrackHit*)((*electronTrackhits)[eleithit]);
00172
00173 cout << "Electronic track: hit number = " << eleithit << endl;
00174 cout << "new ele hit" << endl;
00175 cout << eletrahit->getHitPosition().x() << endl;
00176 cout << eletrahit->getHitPosition().y() << endl;
00177 cout << eletrahit->getHitPosition().z() << endl;
00178 cout << "new ele updated state: position" << endl;
00179 cout << eletrahit->getUpdatedPosition().x() << endl;
00180 cout << eletrahit->getUpdatedPosition().y() << endl;
00181 cout << eletrahit->getUpdatedPosition().z() << endl;
00182 cout << "new ele updated state: momentum" << endl;
00183 cout << eletrahit->getUpdatedMomentum().x() << endl;
00184 cout << eletrahit->getUpdatedMomentum().y() << endl;
00185 cout << eletrahit->getUpdatedMomentum().z() << endl;
00186
00187 // checking first and last hit
00188 if ( eleithit == elehitcount){
00189 cout << "electronic track" << endl;
00190 cout << "position" << endl;
00191 cout << "first hit, x" << eletrahit->getUpdatedPosition().x() << endl;
00192 cout << "first hit, y" << eletrahit->getUpdatedPosition().y() << endl;
00193 cout << "first hit, z" << eletrahit->getUpdatedPosition().z() << endl;
00194 cout << "momentum" << endl;
00195 cout << "first hit, px" << eletrahit->getUpdatedMomentum().x() << endl;
00196 cout << "first hit, py" << eletrahit->getUpdatedMomentum().y() << endl;
00197 cout << "first hit, pz" << eletrahit->getUpdatedMomentum().z() << endl;
00198 }
00199 if ( eleithit == (eletra->getNumberOfHits() + elehitcount -1)){
00200 cout << "position" << endl;
00201 cout << "last hit, x" << eletrahit->getUpdatedPosition().x() << endl;
00202 cout << "last hit, y" << eletrahit->getUpdatedPosition().y() << endl;
00203 cout << "last hit, z" << eletrahit->getUpdatedPosition().z() << endl;
00204 cout << "momentum" << endl;
00205 cout << "last hit, px" << eletrahit->getUpdatedMomentum().x() << endl;
00206 cout << "last hit, py" << eletrahit->getUpdatedMomentum().y() << endl;
00207 cout << "last hit, pz" << eletrahit->getUpdatedMomentum().z() << endl;
00208 }
00209
00210 } // end loop over hits
00211
00212 // checking first and last hit
00213 cout << "standard method:" << endl;
00214 cout << "position" << endl;
00215 cout << "first hit, x" << eletra->getPositionAtFirstPoint().x() << endl;
00216 cout << "first hit, y" << eletra->getPositionAtFirstPoint().y() << endl;
00217 cout << "first hit, z" << eletra->getPositionAtFirstPoint().z() << endl;
00218 cout << "last hit, x" << eletra->getPositionAtLastPoint().x() << endl;
00219 cout << "last hit, y" << eletra->getPositionAtLastPoint().y() << endl;
00220 cout << "last hit, z" << eletra->getPositionAtLastPoint().z() << endl;
00221 cout << "momentum" << endl;
00222 cout << "first hit, px" << eletra->getMomentumAtFirstPoint().x() << endl;
00223 cout << "first hit, py" << eletra->getMomentumAtFirstPoint().y() << endl;
00224 cout << "first hit, pz" << eletra->getMomentumAtFirstPoint().z() << endl;
00225 cout << "last hit, px" << eletra->getMomentumAtLastPoint().x() << endl;
00226 cout << "last hit, py" << eletra->getMomentumAtLastPoint().y() << endl;
00227 cout << "last hit, pz" << eletra->getMomentumAtLastPoint().z() << endl;
00228
00229 elehitcount = elehitcount + eletra->getNumberOfHits();
00230 } // ok electron track
00231 } // loop over electron candidates
00232
00233 event->clear();
00234 }
00235
00236 cout << endl;
00237 cout << nevent << " events and " << nb << " bytes read " << endl;
00238 cout << endl;
00239
00240 f->Close();
00241
00242 }
|
1.2.14 written by Dimitri van Heesch,
© 1997-2002