5 // Author: S.Aiola, C.Loizides
7 #include "AliJetEmbeddingFromGenTask.h"
9 #include <TClonesArray.h>
11 #include <TLorentzVector.h>
12 #include <TParticle.h>
13 #include <TParticlePDG.h>
16 #include "AliAnalysisManager.h"
17 #include "AliEMCALDigit.h"
18 #include "AliEMCALGeometry.h"
19 #include "AliEMCALRecPoint.h"
20 #include "AliGenerator.h"
21 #include "AliHeader.h"
23 #include "AliPicoTrack.h"
25 #include "AliRunLoader.h"
28 #include "AliVCluster.h"
29 #include "AliVEvent.h"
30 #include "AliGenPythiaEventHeader.h"
32 ClassImp(AliJetEmbeddingFromGenTask)
34 //________________________________________________________________________
35 AliJetEmbeddingFromGenTask::AliJetEmbeddingFromGenTask() :
36 AliJetModelBaseTask("AliJetEmbeddingFromGenTask"),
42 // Default constructor.
43 SetSuffix("EmbeddedFromGen");
46 //________________________________________________________________________
47 AliJetEmbeddingFromGenTask::AliJetEmbeddingFromGenTask(const char *name, Bool_t drawqa) :
48 AliJetModelBaseTask(name,drawqa),
54 // Standard constructor.
55 SetSuffix("EmbeddedFromGen");
58 //________________________________________________________________________
59 AliJetEmbeddingFromGenTask::~AliJetEmbeddingFromGenTask()
64 //________________________________________________________________________
65 void AliJetEmbeddingFromGenTask::UserCreateOutputObjects()
67 // Create user output.
72 AliJetModelBaseTask::UserCreateOutputObjects();
74 fHistTrials = new TH1F("fHistTrials", "fHistTrials", 1, 0, 1);
75 fHistTrials->GetYaxis()->SetTitle("trials");
76 fOutput->Add(fHistTrials);
78 fHistXsection = new TProfile("fHistXsection", "fHistXsection", 1, 0, 1);
79 fHistXsection->GetYaxis()->SetTitle("xsection");
80 fOutput->Add(fHistXsection);
82 fHistPtHard = new TH1F("fHistPtHard", "fHistPtHard", 500, 0., 500.);
83 fHistPtHard->GetXaxis()->SetTitle("p_{T,hard} (GeV/c)");
84 fHistPtHard->GetYaxis()->SetTitle("counts");
85 fOutput->Add(fHistPtHard);
90 //________________________________________________________________________
91 Bool_t AliJetEmbeddingFromGenTask::ExecOnce()
96 new AliRun("gAlice","The ALICE Off-line Simulation Framework");
98 gRandom = new TRandom3(0);
101 TFolder *folder = new TFolder(GetName(),GetName());
102 AliRunLoader *rl = new AliRunLoader(folder);
105 AliStack *stack = rl->Stack();
106 fGen->SetStack(stack);
109 if (!(InputEvent()->FindListObject(fTracksName))) {
110 fOutTracks = new TClonesArray("AliPicoTrack", 1000);
111 fOutTracks->SetName(fTracksName);
112 InputEvent()->AddObject(fOutTracks);
119 //________________________________________________________________________
120 void AliJetEmbeddingFromGenTask::Run()
127 AliStack *stack = fGen->GetStack();
130 const Int_t nprim = stack->GetNprimary();
131 for (Int_t i=0;i<nprim;++i) {
132 if (!stack->IsPhysicalPrimary(i))
134 TParticle *part = stack->Particle(i);
135 TParticlePDG *pdg = part->GetPDG(1);
138 Int_t c = (Int_t)(TMath::Abs(pdg->Charge()));
141 Double_t pt = part->Pt();
142 Double_t eta = part->Eta();
143 Double_t phi = part->Phi();
156 AddTrack(pt, eta, phi,0,0,0,0,0,0,c,part->GetMass());
159 FillPythiaHistograms();
162 //________________________________________________________________________
163 void AliJetEmbeddingFromGenTask::FillPythiaHistograms() {
164 //Get PYTHIA info: pt-hard, x-section, trials
169 AliRunLoader *rl = AliRunLoader::Instance();
170 AliGenPythiaEventHeader *genPH = dynamic_cast<AliGenPythiaEventHeader*>(rl->GetHeader()->GenEventHeader());
172 // Printf("found pythia event header. pThard: %f Trials: %d xsec: %f",genPH->GetPtHard(),genPH->Trials(),genPH->GetXsection());
173 Float_t xsec = genPH->GetXsection();
174 Int_t trials = genPH->Trials();
175 Float_t pthard = genPH->GetPtHard();
177 fHistXsection->Fill(0.5,xsec);
178 fHistTrials->Fill(0.5,trials);
179 fHistPtHard->Fill(pthard);