]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/macros/AddTaskFastEmbedding.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGJE / macros / AddTaskFastEmbedding.C
1
2 AliAnalysisTaskFastEmbedding* AddTaskFastEmbedding(){
3
4    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
5    if(!mgr){
6       ::Error("AddTaskCentralitySelection", "No analysis manager to connect ot.");
7       return NULL;
8    }
9    if(!mgr->GetInputEventHandler()){
10       ::Error("AddTaskCentralitySelection", "This task requires an input event handler.");
11       return NULL;
12    }
13
14
15    AliAnalysisTaskFastEmbedding *task = new AliAnalysisTaskFastEmbedding("FastEmbedding");
16    // ## set embedding mode ##
17    // kAODFull=0, kAODJetTracks, kAODJet4Mom, kToySingle4Mom
18    task->SetEmbedMode(AliAnalysisTaskFastEmbedding::kToyTracks);
19
20    // ## set ranges for toy ##
21    //SetToyTrackRanges(
22    Double_t minPt = 50.;   Double_t maxPt = 100.;
23    Double_t minEta = -0.5; Double_t maxEta = 0.5;
24    //Double_t minEta = -0.4; Double_t maxEta = 0.4;  // for LHC10h pass1
25    Double_t minPhi = 0.;   Double_t maxPhi = 2*TMath::Pi();
26    //fToyDistributionTrackPt: 0 = uniform distribution
27    //                         else = exponential / power law (not implemented yet)
28    //task->SetToyNumberOfTrackRange(4,4);
29    //task->SetToyTrackRanges(0.15, 300., 5,-.9, .9, 0., 2*TMath::Pi());
30    task->SetToyTrackRanges(minPt,maxPt,0.,minEta,maxEta,minPhi,maxPhi);
31    task->SetToyFilterMap((1<<32)-1);
32
33    // ## set event selection for events of the addition AOD ##
34    // kEventsAll=0; kEventsJetPt
35    task->SetEvtSelecMode(AliAnalysisTaskFastEmbedding::kEventsJetPt);
36
37    // ## set jet pT range for event selection ##
38    // SetEvtSelJetPtRange(Float_t minPt, Float_t maxPt)
39    task->SetEvtSelJetPtRange(50.,110.);
40    //task->SetEvtSelJetEtaRange(-0.4, 0.4); // smaller eta window for LHC10h pass1
41    task->SetEvtSelJetEtaRange(-0.5, 0.5);
42
43    task->SetTrackFilterMap(272);
44
45    // event selection
46    task->SetOfflineTrgMask(AliVEvent::kMB);
47    task->SetCentMin(0.);
48    task->SetCentMax(80.);
49
50    //task->SetVtxMin(-10.);
51    //task->SetVtxMax(10.);
52
53    mgr->AddTask(task);
54
55    // ## create the output containers ##
56    AliAnalysisDataContainer *coutputFastEmbedding = mgr->CreateContainer(
57    "fastembedding", TList::Class(), AliAnalysisManager::kOutputContainer,
58    Form("%s:PWGJE_FastEmbedding", AliAnalysisManager::GetCommonFileName()));
59
60    mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
61    mgr->ConnectOutput(task, 0, mgr->GetCommonOutputContainer());
62    mgr->ConnectOutput(task, 1, coutputFastEmbedding);
63
64
65    return task;
66
67 }
68
69 AliAnalysisTaskFastEmbedding* AddTaskFastEmbedding(TObjArray* aodarray){
70
71    AliAnalysisTaskFastEmbedding *task = AddTaskFastEmbedding();
72    if(aodarray){
73       task->SetArrayOfAODPaths(aodarray);
74       task->SetEmbedMode(AliAnalysisTaskFastEmbedding::kAODFull);
75    }
76
77    return task;
78 }
79
80
81 AliAnalysisTaskFastEmbedding* AddTaskFastEmbedding(const char* filepath, Int_t mode = 0){
82
83    AliAnalysisTaskFastEmbedding *task = AddTaskFastEmbedding();
84    if(strlen(filepath)){
85
86       if(mode==0){ // path to single AOD
87          task->SetAODPath(filepath);
88       }
89       if(mode==1){ // path to text file with list of paths of multiple AODs
90          Printf("Read aod paths from file %s", filepath);
91          TObjArray* array = new TObjArray();
92          TObjString* ostr = 0;
93          TString line;
94          ifstream in;
95          in.open(filepath);
96          while(in.good()){
97             in >> line;
98             if(line.Length() == 0)  continue;
99             
100             Printf("found aod path %s", line.Data());
101             ostr = new TObjString(line.Data());
102             array->Add(ostr);
103          }
104          Printf("-> %d aod paths found", array->GetEntries());
105          
106          task->SetArrayOfAODPaths(array);
107       }
108       if(mode==2) { //read root file which contains object array
109         TFile *f = TFile::Open(filepath);
110         TObjArray *objarray;
111         f->GetObject("array",objarray);
112
113         Printf("-> %d aod paths found", objarray->GetEntries());
114         
115         task->SetArrayOfAODPaths(objarray);
116
117
118         Int_t count = 0;
119         Int_t iEntry = -1;
120         Int_t iEntrySum = 0;
121         Int_t iEntryMax = 0;
122
123         TArrayI* array = new TArrayI();
124
125         for(int i=0; i<objarray->GetEntriesFast(); i++) {
126           TObjString *objStr = (TObjString*) objarray->At(i);
127           TString str = objStr->GetString();
128           iEntry = str.Atoi();
129           array->Set(count+1);
130           array->AddAt(iEntry,count);
131           count++;
132           iEntrySum += iEntry;
133           if(iEntry>iEntryMax) iEntryMax = iEntry;
134         }
135         
136         task->SetArrayOfAODEntries(array);
137         task->SetAODEntriesSum(iEntrySum);
138         task->SetAODEntriesMax(iEntryMax);
139
140       }
141
142       task->SetEmbedMode(AliAnalysisTaskFastEmbedding::kAODFull);
143    }
144
145    return task;
146 }
147
148 AliAnalysisTaskFastEmbedding* AddTaskFastEmbedding(const char* aodpath, const char* entriespath){
149
150    AliAnalysisTaskFastEmbedding *task = AddTaskFastEmbedding(aodpath, 1);
151
152    Printf("Read entries of aod files from %s", entriespath);
153    TArrayI* array = new TArrayI();
154    Int_t count = 0;
155    Int_t iEntry = -1;
156    Int_t iEntrySum = 0;
157    Int_t iEntryMax = 0;
158    TString line;
159    ifstream in;
160    in.open(entriespath);
161    while(in.good()){
162       in >> line;
163       iEntry = line.Atoi();
164
165       array->Set(count+1);
166       array->AddAt(iEntry,count);
167       count++;
168       iEntrySum += iEntry;
169       if(iEntry>iEntryMax) iEntryMax = iEntry;
170    }
171
172    task->SetArrayOfAODEntries(array);
173    task->SetAODEntriesSum(iEntrySum);
174    task->SetAODEntriesMax(iEntryMax);
175
176    return task;
177 }
178