1 // $Id: AliJetEmbeddingFromPYTHIATask.cxx $
3 // Jet embedding from PYTHIA task.
5 // Author: S.Aiola, C.Loizides
7 #include "AliJetEmbeddingFromPYTHIATask.h"
14 #include "AliVEvent.h"
17 ClassImp(AliJetEmbeddingFromPYTHIATask)
19 //________________________________________________________________________
20 AliJetEmbeddingFromPYTHIATask::AliJetEmbeddingFromPYTHIATask() :
21 AliJetEmbeddingFromAODTask("AliJetEmbeddingFromPYTHIATask", kFALSE),
24 fLHC11hAnchorRun(kTRUE),
28 // Default constructor.
29 SetSuffix("PYTHIAEmbedding");
31 fRandomAccess = kTRUE;
34 //________________________________________________________________________
35 AliJetEmbeddingFromPYTHIATask::AliJetEmbeddingFromPYTHIATask(const char *name) :
36 AliJetEmbeddingFromAODTask(name, kFALSE),
37 fPYTHIAPath("/alice/sim/2012/LHC12a15e"),
39 fLHC11hAnchorRun(kTRUE),
43 // Standard constructor.
44 SetSuffix("PYTHIAEmbedding");
46 fRandomAccess = kTRUE;
49 //________________________________________________________________________
50 AliJetEmbeddingFromPYTHIATask::~AliJetEmbeddingFromPYTHIATask()
55 //________________________________________________________________________
56 Bool_t AliJetEmbeddingFromPYTHIATask::ExecOnce()
58 if (fPtHardBinScaling.GetSize() > 0) {
60 for (Int_t i = 0; i < fPtHardBinScaling.GetSize(); i++)
61 sum += fPtHardBinScaling[i];
64 AliWarning("No hard pt bin scaling!");
65 sum = fPtHardBinScaling.GetSize();
68 for (Int_t i = 0; i < fPtHardBinScaling.GetSize(); i++)
69 fPtHardBinScaling[i] /= sum;
72 return AliJetEmbeddingFromAODTask::ExecOnce();
75 //________________________________________________________________________
76 Bool_t AliJetEmbeddingFromPYTHIATask::GetNextEntry()
78 Int_t newPtHard = GetRandomPtHardBin();
80 if (newPtHard != fCurrentPtHardBin) {
81 fCurrentPtHardBin = newPtHard;
82 if (!OpenNextFile()) return kFALSE;
85 return AliJetEmbeddingFromAODTask::GetNextEntry();
88 //________________________________________________________________________
89 Int_t AliJetEmbeddingFromPYTHIATask::GetRandomPtHardBin()
91 static Int_t order[20]={-1};
94 TMath::Sort(fPtHardBinScaling.GetSize(), fPtHardBinScaling.GetArray(), order);
96 Double_t rnd = gRandom->Rndm();
99 for (Int_t i = 0; i < fPtHardBinScaling.GetSize(); i++) {
100 sum += fPtHardBinScaling[order[i]];
110 //________________________________________________________________________
111 Bool_t AliJetEmbeddingFromPYTHIATask::UserNotify()
113 if (!fLHC11hAnchorRun)
116 Int_t runNumber = InputEvent()->GetRunNumber();
118 Int_t semiGoodRunList[28] = {169975, 169981, 170038, 170040, 170083, 170084, 170085, 170088,
119 170089, 170091, 170152, 170155, 170159, 170163, 170193, 170195,
120 170203, 170204, 170205, 170228, 170230, 170264, 170268, 170269,
121 170270, 170306, 170308, 170309};
123 fAnchorRun = 169838; // Assume it is a good run
125 for (Int_t i = 0; i < 28; i++) {
126 if (runNumber == semiGoodRunList[i]) { // If it is semi good, change the anchor run
135 //________________________________________________________________________
136 TString AliJetEmbeddingFromPYTHIATask::GetNextFileName()
138 fCurrentAODFileID = TMath::Nint(gRandom->Rndm()*(fTotalFiles-1))+1;
140 TString fileName(fPYTHIAPath);
141 if (!fileName.EndsWith("/"))
144 fileName += fAnchorRun;
146 fileName += fCurrentPtHardBin;
148 if (fCurrentAODFileID < 10)
150 else if (fCurrentAODFileID < 100)
152 fileName += fCurrentAODFileID;
153 fileName += "/AliAOD.root";