]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/AliJetEmbeddingFromGenTask.cxx
Merge remote-tracking branch 'origin/master' into TPCdev
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliJetEmbeddingFromGenTask.cxx
CommitLineData
8628b70c 1// $Id$
6deabc32 2//
3// Jet embedding task.
4//
5// Author: S.Aiola, C.Loizides
6
7#include "AliJetEmbeddingFromGenTask.h"
8
9#include <TClonesArray.h>
bd2cf60a 10#include <TFolder.h>
6deabc32 11#include <TLorentzVector.h>
bd2cf60a 12#include <TParticle.h>
13#include <TParticlePDG.h>
6deabc32 14#include <TRandom3.h>
6deabc32 15#include "AliAnalysisManager.h"
16#include "AliEMCALDigit.h"
17#include "AliEMCALGeometry.h"
18#include "AliEMCALRecPoint.h"
19#include "AliGenerator.h"
bd2cf60a 20#include "AliHeader.h"
6deabc32 21#include "AliLog.h"
22#include "AliPicoTrack.h"
bd2cf60a 23#include "AliRun.h"
24#include "AliRunLoader.h"
25#include "AliStack.h"
6deabc32 26#include "AliStack.h"
27#include "AliVCluster.h"
28#include "AliVEvent.h"
29
30ClassImp(AliJetEmbeddingFromGenTask)
31
32//________________________________________________________________________
33AliJetEmbeddingFromGenTask::AliJetEmbeddingFromGenTask() :
34 AliJetModelBaseTask("AliJetEmbeddingFromGenTask"),
35 fGen(0)
36{
37 // Default constructor.
38 SetSuffix("EmbeddedFromGen");
39}
40
41//________________________________________________________________________
42AliJetEmbeddingFromGenTask::AliJetEmbeddingFromGenTask(const char *name) :
43 AliJetModelBaseTask(name),
44 fGen(0)
45{
46 // Standard constructor.
47 SetSuffix("EmbeddedFromGen");
48}
49
50//________________________________________________________________________
51AliJetEmbeddingFromGenTask::~AliJetEmbeddingFromGenTask()
52{
53 // Destructor
54}
55
56//________________________________________________________________________
d63c8c07 57Bool_t AliJetEmbeddingFromGenTask::ExecOnce()
6deabc32 58{
bd2cf60a 59 // Exec only once.
6deabc32 60
bd2cf60a 61 if (!gAlice) {
62 new AliRun("gAlice","The ALICE Off-line Simulation Framework");
63 delete gRandom;
64 gRandom = new TRandom3(0);
65 }
66
67 TFolder *folder = new TFolder(GetName(),GetName());
68 AliRunLoader *rl = new AliRunLoader(folder);
69 rl->MakeHeader();
70 rl->MakeStack();
71 AliStack *stack = rl->Stack();
72 fGen->SetStack(stack);
73 fGen->Init();
74
806ada48 75 if (!(InputEvent()->FindListObject(fTracksName))) {
bd2cf60a 76 fOutTracks = new TClonesArray("AliPicoTrack", 1000);
77 fOutTracks->SetName(fTracksName);
884c6dab 78 InputEvent()->AddObject(fOutTracks);
bd2cf60a 79 fNTracks = 0;
6deabc32 80 }
806ada48 81
d63c8c07 82 return kTRUE;
6deabc32 83}
84
85//________________________________________________________________________
86void AliJetEmbeddingFromGenTask::Run()
87{
88 // Embed particles.
89
f2baf8e8 90 if(fOutTracks)
91 fOutTracks->Delete();
806ada48 92
bd2cf60a 93 if (fCopyArray)
94 CopyTracks();
6deabc32 95
96 AliStack *stack = fGen->GetStack();
bd2cf60a 97 stack->Reset();
98 fGen->Generate();
6deabc32 99 const Int_t nprim = stack->GetNprimary();
100 for (Int_t i=0;i<nprim;++i) {
bd2cf60a 101 if (!stack->IsPhysicalPrimary(i))
102 continue;
6deabc32 103 TParticle *part = stack->Particle(i);
bd2cf60a 104 TParticlePDG *pdg = part->GetPDG(1);
105 if (!pdg)
106 continue;
107 Int_t c = (Int_t)(TMath::Abs(pdg->Charge()));
108 if (c==0)
109 continue;
110 Double_t pt = part->Pt();
111 Double_t eta = part->Eta();
112 Double_t phi = part->Phi();
113 if (eta<fEtaMin)
114 continue;
115 if (eta>fEtaMax)
116 continue;
117 if (phi<fPhiMin)
118 continue;
119 if (phi>fPhiMax)
120 continue;
121 if (pt<fPtMin)
122 continue;
123 if (pt>fPtMax)
124 continue;
396ffc82 125 AddTrack(pt, eta, phi,0,0,0,0,0,0,part->GetMass());
6deabc32 126 }
127}