3 #include "AlidNdEtaAnalysisMCSelector.h"
9 #include <TParticlePDG.h>
16 #include <AliGenEventHeader.h>
17 #include <AliHeader.h>
19 #include "dNdEtaAnalysis.h"
22 ClassImp(AlidNdEtaAnalysisMCSelector)
24 AlidNdEtaAnalysisMCSelector::AlidNdEtaAnalysisMCSelector() :
25 AlidNdEtaAnalysisSelector(),
31 // Constructor. Initialization of pointers
35 AlidNdEtaAnalysisMCSelector::~AlidNdEtaAnalysisMCSelector()
42 void AlidNdEtaAnalysisMCSelector::Init(TTree *tree)
44 AlidNdEtaAnalysisSelector::Init(tree);
46 tree->SetBranchStatus("ESD", 0);
48 fVertex = new TH3F("vertex_check", "vertex_check", 50, -50, 50, 50, -50, 50, 50, -50, 50);
49 fPartEta = new TH1F("dndeta_check", "dndeta_check", 120, -6, 6);
53 Bool_t AlidNdEtaAnalysisMCSelector::Process(Long64_t entry)
57 if (AliSelector::Process(entry) == kFALSE)
60 TTree* particleTree = GetKinematics();
63 AliDebug(AliLog::kError, "Kinematics not available");
67 AliHeader* header = GetHeader();
70 AliDebug(AliLog::kError, "Header not available");
75 AliGenEventHeader* genHeader = header->GenEventHeader();
78 genHeader->PrimaryVertex(vtxMC);
80 particleTree->SetBranchStatus("*", 0);
81 particleTree->SetBranchStatus("fDaughter[2]", 1);
82 particleTree->SetBranchStatus("fPdgCode", 1);
83 particleTree->SetBranchStatus("fPx", 1);
84 particleTree->SetBranchStatus("fPy", 1);
85 particleTree->SetBranchStatus("fPz", 1);
86 particleTree->SetBranchStatus("fVx", 1);
87 particleTree->SetBranchStatus("fVy", 1);
88 particleTree->SetBranchStatus("fVz", 1);
90 TParticle* particle = 0;
91 particleTree->SetBranchAddress("Particles", &particle);
93 Int_t nPrim = header->GetNprimary();
94 Int_t nTotal = header->GetNtrack();
96 for (Int_t i_mc = nTotal - nPrim; i_mc < nTotal; ++i_mc)
98 particleTree->GetEntry(i_mc);
103 if (IsPrimaryCharged(particle, nPrim) == kFALSE)
106 AliDebug(AliLog::kDebug+1, Form("Accepted primary %d, unique ID: %d", i_mc, particle->GetUniqueID()));
108 fdNdEtaAnalysis->FillTrack(vtxMC[2], particle->Eta());
109 fVertex->Fill(particle->Vx(), particle->Vy(), particle->Vz());
111 fPartEta->Fill(particle->Eta());
113 fdNdEtaAnalysis->FillEvent(vtxMC[2]);
120 void AlidNdEtaAnalysisMCSelector::Terminate()
122 AlidNdEtaAnalysisSelector::Terminate();
124 fPartEta->Scale(1.0/fEvents);
125 fPartEta->Scale(1.0/fPartEta->GetBinWidth(1));
127 TCanvas* canvas = new TCanvas("control", "control", 900, 450);
128 canvas->Divide(2, 1);