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"),
44 // Default constructor.
45 SetSuffix("EmbeddedFromGen");
48 //________________________________________________________________________
49 AliJetEmbeddingFromGenTask::AliJetEmbeddingFromGenTask(const char *name, Bool_t drawqa) :
50 AliJetModelBaseTask(name,drawqa),
58 // Standard constructor.
59 SetSuffix("EmbeddedFromGen");
62 //________________________________________________________________________
63 AliJetEmbeddingFromGenTask::~AliJetEmbeddingFromGenTask()
68 //________________________________________________________________________
69 void AliJetEmbeddingFromGenTask::UserCreateOutputObjects()
71 // Create user output.
76 AliJetModelBaseTask::UserCreateOutputObjects();
78 fHistPt = new TH1F("fHistpt","fHistPt;#it{p}_{T};N",100,0.,100.);
79 fOutput->Add(fHistPt);
81 fHistTrials = new TH1F("fHistTrials", "fHistTrials", 1, 0, 1);
82 fHistTrials->GetYaxis()->SetTitle("trials");
83 fOutput->Add(fHistTrials);
85 fHistXsection = new TProfile("fHistXsection", "fHistXsection", 1, 0, 1);
86 fHistXsection->GetYaxis()->SetTitle("xsection");
87 fOutput->Add(fHistXsection);
89 fHistPtHard = new TH1F("fHistPtHard", "fHistPtHard", 500, 0., 500.);
90 fHistPtHard->GetXaxis()->SetTitle("p_{T,hard} (GeV/c)");
91 fHistPtHard->GetYaxis()->SetTitle("counts");
92 fOutput->Add(fHistPtHard);
97 //________________________________________________________________________
98 Bool_t AliJetEmbeddingFromGenTask::ExecOnce()
103 new AliRun("gAlice","The ALICE Off-line Simulation Framework");
105 gRandom = new TRandom3(0);
108 TFolder *folder = new TFolder(GetName(),GetName());
109 AliRunLoader *rl = new AliRunLoader(folder);
112 AliStack *stack = rl->Stack();
113 fGen->SetStack(stack);
116 if (!(InputEvent()->FindListObject(fTracksName))) {
117 fOutTracks = new TClonesArray("AliPicoTrack", 1000);
118 fOutTracks->SetName(fTracksName);
119 InputEvent()->AddObject(fOutTracks);
126 //________________________________________________________________________
127 void AliJetEmbeddingFromGenTask::Run()
134 AliStack *stack = fGen->GetStack();
137 const Int_t nprim = stack->GetNprimary();
138 for (Int_t i=0;i<nprim;++i) {
139 if (!stack->IsPhysicalPrimary(i))
141 TParticle *part = stack->Particle(i);
142 TParticlePDG *pdg = part->GetPDG(1);
145 Int_t c = (Int_t)(TMath::Abs(pdg->Charge()));
148 Double_t pt = part->Pt();
149 Double_t eta = part->Eta();
150 Double_t phi = part->Phi();
163 Double_t mass = part->GetMass();
164 if(fMassless) mass = 0.;
166 AddTrack(pt, eta, phi,0,0,0,0,0,0,c,mass);
169 FillPythiaHistograms();
172 //________________________________________________________________________
173 void AliJetEmbeddingFromGenTask::FillPythiaHistograms() {
174 //Get PYTHIA info: pt-hard, x-section, trials
179 AliRunLoader *rl = AliRunLoader::Instance();
180 AliGenPythiaEventHeader *genPH = dynamic_cast<AliGenPythiaEventHeader*>(rl->GetHeader()->GenEventHeader());
182 Float_t xsec = genPH->GetXsection();
183 Int_t trials = genPH->Trials();
184 Float_t pthard = genPH->GetPtHard();
186 fHistXsection->Fill(0.5,xsec);
187 fHistTrials->Fill(0.5,trials);
188 fHistPtHard->Fill(pthard);