3 // Jet model task to copy tracks while making small change
4 // - make particles massless
8 #include "AliJetModelCopyTracks.h"
10 #include <TClonesArray.h>
12 #include <TLorentzVector.h>
13 #include <TParticle.h>
14 #include <TParticlePDG.h>
20 #include "AliAnalysisManager.h"
21 #include "AliEMCALDigit.h"
22 #include "AliEMCALGeometry.h"
23 #include "AliEMCALRecPoint.h"
24 #include "AliGenerator.h"
25 #include "AliHeader.h"
27 #include "AliPicoTrack.h"
29 #include "AliRunLoader.h"
32 #include "AliVCluster.h"
33 #include "AliVEvent.h"
35 ClassImp(AliJetModelCopyTracks)
37 //________________________________________________________________________
38 AliJetModelCopyTracks::AliJetModelCopyTracks() :
39 AliAnalysisTaskEmcal("AliJetModelCopyTracks",kTRUE),
42 fParticleMass(kMassive),
45 // Default constructor.
46 SetMakeGeneralHistograms(kTRUE);
49 //________________________________________________________________________
50 AliJetModelCopyTracks::AliJetModelCopyTracks(const char *name) :
51 AliAnalysisTaskEmcal(name,kTRUE),
54 fParticleMass(kMassive),
57 // Standard constructor.
58 SetMakeGeneralHistograms(kTRUE);
61 //________________________________________________________________________
62 AliJetModelCopyTracks::~AliJetModelCopyTracks()
68 //________________________________________________________________________
69 void AliJetModelCopyTracks::ExecOnce()
73 AliAnalysisTaskEmcal::ExecOnce();
75 if (!fTracksOutName.IsNull()) {
76 fTracksOut = new TClonesArray("AliPicoTrack");
77 fTracksOut->SetName(fTracksOutName);
78 if (InputEvent()->FindListObject(fTracksOutName)) {
79 AliFatal(Form("%s: Collection %s is already present in the event!", GetName(), fTracksOutName.Data()));
83 InputEvent()->AddObject(fTracksOut);
88 //________________________________________________________________________
89 void AliJetModelCopyTracks::UserCreateOutputObjects()
91 AliAnalysisTaskEmcal::UserCreateOutputObjects();
93 const Int_t nBinPt = 100;
94 Double_t binLimitsPt[nBinPt+1];
95 for(Int_t iPt = 0;iPt <= nBinPt;iPt++){
97 binLimitsPt[iPt] = 0.0;
99 binLimitsPt[iPt] = binLimitsPt[iPt-1] + 1.0;
103 fHistPtOut = new TH1F("fHistPtOut","fHistPtOut;#it{p}_{T};N",nBinPt,binLimitsPt);
104 fOutput->Add(fHistPtOut);
106 PostData(1, fOutput); // Post data for ALL output slots > 0 here.
110 //________________________________________________________________________
111 Bool_t AliJetModelCopyTracks::Run()
117 //________________________________________________________________________
118 void AliJetModelCopyTracks::CopyTracks()
120 //Apply toy detector simulation to tracks
121 fTracksOut->Delete();
124 const Int_t nTracks = fTracks->GetEntriesFast();
125 for (Int_t i = 0; i < nTracks; ++i) {
126 AliPicoTrack *picotrack = static_cast<AliPicoTrack*>(fTracks->At(i));
130 Double_t mass = picotrack->M();
131 if(fParticleMass==kMassless) mass = 0.;
132 if(fParticleMass==kPionMass) mass = 0.13957;
134 AliPicoTrack *track = new ((*fTracksOut)[nt]) AliPicoTrack(picotrack->Pt(),
138 picotrack->GetLabel(),
139 AliPicoTrack::GetTrackType(picotrack),
140 picotrack->GetTrackEtaOnEMCal(),
141 picotrack->GetTrackPhiOnEMCal(),
142 picotrack->GetTrackPtOnEMCal(),
143 picotrack->IsEMCAL(),
145 track->SetBit(TObject::kBitMask,1);
146 fHistPtOut->Fill(track->Pt());