Update timestamps for new AMANDA simulation (17/02/2015)
[u/mrichter/AliRoot.git] / test / gun / test.C
CommitLineData
3928b038 1// Usage in compiled mode
2// gSystem->SetIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include");
3// gROOT->LoadMacro("test.C+");
4// test()
5
6#if !defined(__CINT__) || defined(__MAKECINT__)
7
8// Root include files
9#include <Riostream.h>
10#include <TFile.h>
11#include <TTree.h>
12#include <TBranch.h>
13#include <TStopwatch.h>
14#include <TObject.h>
15#include <TParticle.h>
16
17// AliRoot include files
2cb8424d 18#include "AliESDEvent.h"
3928b038 19#include "AliRunLoader.h"
20#include "AliRun.h"
21#include "AliStack.h"
22
23#endif
24
25void test(const char * sdir =".") {
26
27 TStopwatch timer;
28 timer.Start();
29
30 TString name;
31
2cb8424d 32 // Signal file and tree
3928b038 33 name = sdir;
34 name += "/AliESDs.root";
35 TFile * fSig = TFile::Open(name.Data());
36 TTree * tSig = (TTree*)fSig->Get("esdTree");
3928b038 37
2cb8424d 38 AliESDEvent * esdSig = new AliESDEvent();// The signal ESD object is put here
39 esdSig->ReadFromTree(tSig);
3928b038 40
41 // Run loader (signal events)
42 name = sdir;
43 name += "/galice.root";
44 AliRunLoader* rlSig = AliRunLoader::Open(name.Data());
45
46 // gAlice
47 rlSig->LoadgAlice();
48 gAlice = rlSig->GetAliRun();
49
50 // Now load kinematics and event header
51 rlSig->LoadKinematics();
52 rlSig->LoadHeader();
53
54 // Loop on events: check that MC and data contain the same number of events
55 Long64_t nevSig = rlSig->GetNumberOfEvents();
56
57 cout << nevSig << " signal events" << endl;
58
59 Int_t lab[3]; // Labels from TOF
60 Double_t mom[3]; // Track momentum
61
62 for (Int_t iev=0; iev<nevSig; iev++) {
63 cout << "---------- Signal event ----------" << iev << endl;
64
65 // Get signal ESD
2cb8424d 66 tSig->GetEntry(iev);
3928b038 67
68 // Particle stack
69 rlSig->GetEvent(iev);
70 AliStack * stackSig = rlSig->Stack();
71 stackSig->DumpPStack();
72 Int_t nPartSig = stackSig->GetNtrack();
73
74 Int_t nrec = esdSig->GetNumberOfTracks();
75 cout << nrec << " reconstructed tracks" << endl;
76 for(Int_t irec=0; irec<nrec; irec++) {
77 AliESDtrack * track = esdSig->GetTrack(irec);
78 cout << "Labels:" << endl;
79 cout << "Global: "<< track->GetLabel() << endl;
80 cout << "ITS: "<< track->GetITSLabel() << endl;
81 cout << "TPC: "<< track->GetTPCLabel() << endl;
82 cout << "TRD: "<< track->GetTRDLabel() << endl;
83 track->GetTOFLabel(lab);
84 cout << "TOF: "<< lab[0] <<" "<< lab[1] <<" "<< lab[2] << endl;
85 UInt_t label = TMath::Abs(track->GetLabel());
86 if (label>=10000000) {
87 // Underlying event. 10000000 is the
88 // value of fkMASKSTEP in AliRunDigitizer
89 cout <<"Strange, there should be no underlying event"<<endl;
90 }
91 else {
92 if (label>=nPartSig) {
93 cout <<"Strange, label outside the range"<< endl;
94 continue;
95 }
96 TParticle * part = stackSig->Particle(label);
97 if(part) part->Print();
98 track->GetPxPyPz(mom);
99 cout <<"Momentum: "<< mom[0] <<" "<< mom[1] <<" "<< mom[2] <<endl;
100 }
101
102 }
103
104 }
105
106 fSig->Close();
107
108 timer.Stop();
109 timer.Print();
110}