]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/AliJetEmbeddingFromPYTHIATask.cxx
up from salvatore
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliJetEmbeddingFromPYTHIATask.cxx
CommitLineData
a6e51e61 1// $Id: AliJetEmbeddingFromPYTHIATask.cxx $
2//
3// Jet embedding from PYTHIA task.
4//
5// Author: S.Aiola, C.Loizides
6
7#include "AliJetEmbeddingFromPYTHIATask.h"
8
9#include <TFile.h>
10#include <TMath.h>
11#include <TString.h>
12#include <TRandom.h>
13
14#include "AliVEvent.h"
15#include "AliLog.h"
16
17ClassImp(AliJetEmbeddingFromPYTHIATask)
18
19//________________________________________________________________________
20AliJetEmbeddingFromPYTHIATask::AliJetEmbeddingFromPYTHIATask() :
21 AliJetEmbeddingFromAODTask("AliJetEmbeddingFromPYTHIATask", kFALSE),
22 fPYTHIAPath(),
23 fPtHardBinScaling(),
24 fLHC11hAnchorRun(kTRUE),
25 fAnchorRun(-1),
26 fCurrentPtHardBin(-1)
27{
28 // Default constructor.
29 SetSuffix("PYTHIAEmbedding");
30 fTotalFiles = 2000;
7030f36f 31 fRandomAccess = kTRUE;
a6e51e61 32}
33
34//________________________________________________________________________
35AliJetEmbeddingFromPYTHIATask::AliJetEmbeddingFromPYTHIATask(const char *name) :
36 AliJetEmbeddingFromAODTask(name, kFALSE),
37 fPYTHIAPath("/alice/sim/2012/LHC12a15e"),
38 fPtHardBinScaling(),
39 fLHC11hAnchorRun(kTRUE),
40 fAnchorRun(-1),
41 fCurrentPtHardBin(-1)
42{
43 // Standard constructor.
44 SetSuffix("PYTHIAEmbedding");
45 fTotalFiles = 2000;
7030f36f 46 fRandomAccess = kTRUE;
a6e51e61 47}
48
49//________________________________________________________________________
50AliJetEmbeddingFromPYTHIATask::~AliJetEmbeddingFromPYTHIATask()
51{
52 // Destructor
53}
54
55//________________________________________________________________________
56Bool_t AliJetEmbeddingFromPYTHIATask::ExecOnce()
57{
58 if (fPtHardBinScaling.GetSize() > 0) {
59 Double_t sum = 0;
60 for (Int_t i = 0; i < fPtHardBinScaling.GetSize(); i++)
61 sum += fPtHardBinScaling[i];
62
63 if (sum == 0) {
64 AliWarning("No hard pt bin scaling!");
65 sum = fPtHardBinScaling.GetSize();
66 }
67
68 for (Int_t i = 0; i < fPtHardBinScaling.GetSize(); i++)
69 fPtHardBinScaling[i] /= sum;
70 }
71
72 return AliJetEmbeddingFromAODTask::ExecOnce();
73}
74
75//________________________________________________________________________
76Bool_t AliJetEmbeddingFromPYTHIATask::GetNextEntry()
77{
78 Int_t newPtHard = GetRandomPtHardBin();
79
80 if (newPtHard != fCurrentPtHardBin) {
81 fCurrentPtHardBin = newPtHard;
82 if (!OpenNextFile()) return kFALSE;
83 }
84
85 return AliJetEmbeddingFromAODTask::GetNextEntry();
86}
87
88//________________________________________________________________________
89Int_t AliJetEmbeddingFromPYTHIATask::GetRandomPtHardBin()
90{
91 static Int_t order[20]={-1};
92
93 if (order[0] == -1)
94 TMath::Sort(fPtHardBinScaling.GetSize(), fPtHardBinScaling.GetArray(), order);
95
96 Double_t rnd = gRandom->Rndm();
97 Double_t sum = 0;
98 Int_t ptHard = -1;
99 for (Int_t i = 0; i < fPtHardBinScaling.GetSize(); i++) {
100 sum += fPtHardBinScaling[order[i]];
101 if (sum >= rnd) {
102 ptHard = order[i];
103 break;
104 }
105 }
106
107 return ptHard;
108}
109
110//________________________________________________________________________
111Bool_t AliJetEmbeddingFromPYTHIATask::UserNotify()
112{
113 if (!fLHC11hAnchorRun)
114 return kTRUE;
115
116 Int_t runNumber = InputEvent()->GetRunNumber();
117
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};
122
123 fAnchorRun = 169838; // Assume it is a good run
124
125 for (Int_t i = 0; i < 28; i++) {
126 if (runNumber == semiGoodRunList[i]) { // If it is semi good, change the anchor run
127 fAnchorRun = 170040;
128 break;
129 }
130 }
131
132 return kTRUE;
133}
134
135//________________________________________________________________________
136TString AliJetEmbeddingFromPYTHIATask::GetNextFileName()
137{
138 fCurrentAODFileID = TMath::Nint(gRandom->Rndm()*(fTotalFiles-1))+1;
139
140 TString fileName(fPYTHIAPath);
141 if (!fileName.EndsWith("/"))
142 fileName += "/";
143
144 fileName += fAnchorRun;
145 fileName += "/";
146 fileName += fCurrentPtHardBin;
147 fileName += "/";
148 if (fCurrentAODFileID < 10)
149 fileName += "00";
150 else if (fCurrentAODFileID < 100)
151 fileName += "0";
152 fileName += fCurrentAODFileID;
153 fileName += "/AliAOD.root";
154
155 return fileName;
156}