]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/dNdEta/AlidNdEtaAnalysisMCSelector.cxx
fixed the way the event bias selection is done
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / AlidNdEtaAnalysisMCSelector.cxx
CommitLineData
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 21ClassImp(AlidNdEtaAnalysisMCSelector)
22
dc740de4 23AlidNdEtaAnalysisMCSelector::AlidNdEtaAnalysisMCSelector() :
24 AlidNdEtaAnalysisSelector(),
25 fVertex(0)
4dd2ad81 26{
27 //
28 // Constructor. Initialization of pointers
29 //
30}
31
32AlidNdEtaAnalysisMCSelector::~AlidNdEtaAnalysisMCSelector()
33{
34 //
35 // Destructor
36 //
37}
38
944f0536 39void 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 48Bool_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
111void AlidNdEtaAnalysisMCSelector::Terminate()
112{
113 AlidNdEtaAnalysisSelector::Terminate();
114
115 new TCanvas;
116 fVertex->Draw();
117}