]>
Commit | Line | Data |
---|---|---|
dc740de4 | 1 | /* $Id$ */ |
2 | ||
4dd2ad81 | 3 | #include "AlidNdEtaAnalysisMCSelector.h" |
4 | ||
5 | #include <TStyle.h> | |
6 | #include <TSystem.h> | |
7 | #include <TCanvas.h> | |
8 | #include <TParticle.h> | |
9 | #include <TParticlePDG.h> | |
10 | #include <TVector3.h> | |
dc740de4 | 11 | #include <TH3F.h> |
7029240a | 12 | #include <TTree.h> |
4dd2ad81 | 13 | |
14 | #include <AliLog.h> | |
15 | #include <AliGenEventHeader.h> | |
7029240a | 16 | #include <AliHeader.h> |
4dd2ad81 | 17 | |
4dd2ad81 | 18 | #include "dNdEtaAnalysis.h" |
19 | ||
dc740de4 | 20 | |
4dd2ad81 | 21 | ClassImp(AlidNdEtaAnalysisMCSelector) |
22 | ||
dc740de4 | 23 | AlidNdEtaAnalysisMCSelector::AlidNdEtaAnalysisMCSelector() : |
24 | AlidNdEtaAnalysisSelector(), | |
25 | fVertex(0) | |
4dd2ad81 | 26 | { |
27 | // | |
28 | // Constructor. Initialization of pointers | |
29 | // | |
30 | } | |
31 | ||
32 | AlidNdEtaAnalysisMCSelector::~AlidNdEtaAnalysisMCSelector() | |
33 | { | |
34 | // | |
35 | // Destructor | |
36 | // | |
37 | } | |
38 | ||
944f0536 | 39 | void AlidNdEtaAnalysisMCSelector::Init(TTree *tree) |
40 | { | |
41 | AlidNdEtaAnalysisSelector::Init(tree); | |
42 | ||
43 | tree->SetBranchStatus("ESD", 0); | |
dc740de4 | 44 | |
45 | fVertex = new TH3F("vertex", "vertex", 50, -50, 50, 50, -50, 50, 50, -50, 50); | |
944f0536 | 46 | } |
47 | ||
4dd2ad81 | 48 | Bool_t AlidNdEtaAnalysisMCSelector::Process(Long64_t entry) |
49 | { | |
50 | // | |
51 | ||
52 | if (AliSelector::Process(entry) == kFALSE) | |
53 | return kFALSE; | |
54 | ||
55 | TTree* particleTree = GetKinematics(); | |
dc740de4 | 56 | if (!particleTree) |
57 | { | |
58 | AliDebug(AliLog::kError, "Kinematics not available"); | |
4dd2ad81 | 59 | return kFALSE; |
dc740de4 | 60 | } |
61 | ||
62 | AliHeader* header = GetHeader(); | |
63 | if (!header) | |
64 | { | |
65 | AliDebug(AliLog::kError, "Header not available"); | |
66 | return kFALSE; | |
67 | } | |
4dd2ad81 | 68 | |
69 | // get the MC vertex | |
dc740de4 | 70 | AliGenEventHeader* genHeader = header->GenEventHeader(); |
4dd2ad81 | 71 | |
72 | TArrayF vtxMC(3); | |
73 | genHeader->PrimaryVertex(vtxMC); | |
74 | ||
944f0536 | 75 | particleTree->SetBranchStatus("*", 0); |
76 | particleTree->SetBranchStatus("fDaughter[2]", 1); | |
77 | particleTree->SetBranchStatus("fPdgCode", 1); | |
78 | particleTree->SetBranchStatus("fPx", 1); | |
79 | particleTree->SetBranchStatus("fPy", 1); | |
80 | particleTree->SetBranchStatus("fPz", 1); | |
dc740de4 | 81 | particleTree->SetBranchStatus("fVx", 1); |
82 | particleTree->SetBranchStatus("fVy", 1); | |
83 | particleTree->SetBranchStatus("fVz", 1); | |
84 | ||
4dd2ad81 | 85 | TParticle* particle = 0; |
86 | particleTree->SetBranchAddress("Particles", &particle); | |
87 | ||
dc740de4 | 88 | Int_t nPrim = header->GetNprimary(); |
89 | Int_t nTotal = header->GetNtrack(); | |
4dd2ad81 | 90 | |
91 | for (Int_t i_mc = nTotal - nPrim; i_mc < nTotal; ++i_mc) | |
92 | { | |
93 | particleTree->GetEntry(i_mc); | |
94 | ||
95 | if (!particle) | |
96 | continue; | |
97 | ||
98 | if (IsPrimaryCharged(particle, nPrim) == kFALSE) | |
99 | continue; | |
100 | ||
dc740de4 | 101 | AliDebug(AliLog::kDebug+1, Form("Accepted primary %d, unique ID: %d", i_mc, particle->GetUniqueID())); |
102 | ||
4dd2ad81 | 103 | fdNdEtaAnalysis->FillTrack(vtxMC[2], particle->Eta(), 1); |
dc740de4 | 104 | fVertex->Fill(particle->Vx(), particle->Vy(), particle->Vz()); |
4dd2ad81 | 105 | } |
106 | fdNdEtaAnalysis->FillEvent(vtxMC[2]); | |
107 | ||
108 | return kTRUE; | |
109 | } | |
dc740de4 | 110 | |
111 | void AlidNdEtaAnalysisMCSelector::Terminate() | |
112 | { | |
113 | AlidNdEtaAnalysisSelector::Terminate(); | |
114 | ||
115 | new TCanvas; | |
116 | fVertex->Draw(); | |
117 | } |