]>
Commit | Line | Data |
---|---|---|
ad90d46d | 1 | UInt_t SFT_gbTrigger; |
2 | Bool_t SFT_gbReadESD; | |
3 | Bool_t SFT_gbReadMC; | |
4 | Int_t SFT_gbMatchMC; | |
5 | Bool_t SFT_gbAvoidExec; | |
6 | Bool_t SFT_gbExtraEventCut; | |
7 | TString SFT_gbCentMethod; | |
8 | Int_t SFT_gbCentPerMin,SFT_gbCentPerMax; | |
9 | Bool_t SFT_gbRunPP; | |
10 | Bool_t SFT_gbRunPA; | |
11 | Int_t SFT_gbSpecie; | |
12 | Bool_t SFT_gbHomemade; | |
13 | Bool_t SFT_gbOnline; | |
14 | Int_t SFT_gbMinNClsTPC; | |
15 | Int_t SFT_gbMinXRows; | |
16 | Double_t SFT_gbMaxChi2PerNClsTPC; | |
17 | Double_t SFT_gbMinXRowsOverNClsFTPC; | |
18 | Double_t SFT_gbMinEta; | |
19 | Double_t SFT_gbMaxEta; | |
20 | Double_t SFT_gbMinPt; | |
21 | Double_t SFT_gbMinImpactParameterXY; | |
22 | Double_t SFT_gbMaxNSigmaPID; | |
23 | Double_t SFT_gbMaxRapidity; | |
24 | Double_t SFT_gbMaxDCAdaughters; | |
25 | Double_t SFT_gbMinCosinePointingAngleXY; | |
26 | Double_t SFT_gbMinQt; | |
27 | Bool_t SFT_gbQtPie; | |
28 | Double_t SFT_gbMinRadXY; | |
29 | Double_t SFT_gbMaxDecayLength; | |
30 | Double_t SFT_gbMaxProductIPXY; | |
31 | Int_t SFT_gbDebug; | |
32 | Int_t SFT_gbQA; | |
33 | TString SFT_gbFolder; | |
34 | TString SFT_gbSuffix; | |
35 | TString SFT_gbStamp; | |
36 | Int_t SFT_gbRFPFilterBit; | |
37 | Double_t SFT_gbRFPminPt; | |
38 | Double_t SFT_gbRFPmaxPt; | |
39 | Double_t SFT_gbRFPminEta; | |
40 | Double_t SFT_gbRFPmaxEta; | |
41 | Double_t SFT_gbRFPTPCsignal; | |
42 | Double_t SFT_gbRFPmaxIPxy; | |
43 | Double_t SFT_gbRFPmaxIPz; | |
44 | Int_t SFT_gbRFPTPCncls; | |
45 | ||
46 | Bool_t SFT_gbAllCC; | |
47 | Bool_t SFT_gbSkipSelection; | |
48 | Bool_t SFT_gbSkipFlow; | |
49 | Int_t SFT_gbWhichPsi; | |
50 | Bool_t SFT_gbFlowPackage; | |
51 | Bool_t SFT_gbShrinkFP; | |
52 | Bool_t SFT_gbSPVZE; | |
53 | Bool_t SFT_gbSPTPC; | |
54 | Bool_t SFT_gbSPVZEhalf; | |
55 | Bool_t SFT_gbQCTPC; | |
c41a93af | 56 | Bool_t SFT_gbMCEP; |
ad90d46d | 57 | Int_t SFT_gbHarmonic; |
58 | TString SFT_gbVZEload; | |
59 | Bool_t SFT_gbVZEsave; | |
60 | Bool_t SFT_gbVZEmb; | |
61 | Bool_t SFT_gbVZEpdisk; | |
62 | Int_t SFT_gbV0CRingMin; | |
63 | Int_t SFT_gbV0CRingMax; | |
64 | Int_t SFT_gbV0ARingMin; | |
65 | Int_t SFT_gbV0ARingMax; | |
dba835f0 | 66 | Int_t SFT_gbDauITS0On; |
67 | Int_t SFT_gbDauITS1On; | |
68 | Int_t SFT_gbDauITS2On; | |
69 | Int_t SFT_gbDauITS3On; | |
70 | Int_t SFT_gbDauITS4On; | |
71 | Int_t SFT_gbDauITS5On; | |
ad90d46d | 72 | |
73 | Bool_t SFT_gbUntagDaughter; | |
512ced40 | 74 | Int_t SFT_gbPostMatched; |
c41a93af | 75 | Double_t SFT_gbVertexZcut; |
ad90d46d | 76 | |
77 | void AddTaskFlowStrange(TString configFile, TString alienaddress, | |
78 | Int_t VZECm=0, Int_t VZECM=3, Int_t VZEAm=0, Int_t VZEAM=3) { | |
79 | Int_t ret = gSystem->Exec( Form("alien_cp %s/%s .",alienaddress.Data(),configFile.Data()) ); | |
80 | printf("FlowStrange copying from grid %d\n",ret); | |
81 | AddTaskFlowStrange(configFile,VZECm,VZECM,VZEAm,VZEAM); | |
82 | } | |
83 | void AddTaskFlowStrange(TString configFile, | |
84 | Int_t VZECm=0, Int_t VZECM=3, Int_t VZEAm=0, Int_t VZEAM=3) { | |
85 | SFT_ReadConfig(configFile); | |
86 | SFT_gbV0CRingMin = VZECm; | |
87 | SFT_gbV0CRingMax = VZECM; | |
88 | SFT_gbV0ARingMin = VZEAm; | |
89 | SFT_gbV0ARingMax = VZEAM; | |
90 | SFT_gbSuffix = Form("%s%d%d%d%d", SFT_gbSuffix.Data(), | |
91 | SFT_gbV0CRingMin, SFT_gbV0CRingMax, SFT_gbV0ARingMin, SFT_gbV0ARingMax); | |
92 | if(SFT_gbAllCC) { | |
93 | int centMin[9] = {00,05,10,20,30,40,50,60,70}; | |
94 | int centMax[9] = {05,10,20,30,40,50,60,70,80}; | |
95 | int ncent=9; | |
96 | if(SFT_gbRunPP) { | |
97 | ncent=3; | |
98 | centMin[0]=10; centMax[0]=30; | |
99 | centMin[1]=30; centMax[1]=50; | |
100 | centMin[2]=0; centMax[2]=100; | |
101 | } else if(SFT_gbRunPA) { | |
102 | ncent=4; | |
103 | centMin[0]=00; centMax[0]=20; | |
104 | centMin[1]=20; centMax[1]=40; | |
105 | centMin[2]=40; centMax[2]=60; | |
106 | centMin[3]=60; centMax[3]=80; | |
107 | } else { | |
108 | } | |
109 | TString antSuffix = SFT_gbSuffix; | |
110 | for(int cc=0; cc!=ncent; ++cc) { | |
111 | SFT_gbCentPerMin = centMin[cc]; | |
112 | SFT_gbCentPerMax = centMax[cc]; | |
113 | SFT_gbSuffix = Form("%s%d%d",antSuffix.Data(),SFT_gbCentPerMin,SFT_gbCentPerMax); | |
114 | AddTaskFlowStrange(); | |
115 | } | |
116 | } else { | |
117 | AddTaskFlowStrange(); | |
118 | } | |
119 | } | |
120 | void AddTaskFlowStrange() { | |
121 | SFT_PrintConfig(); | |
122 | ||
123 | TString fileName = AliAnalysisManager::GetCommonFileName(); | |
124 | fileName.ReplaceAll(".root",""); | |
125 | SFT_gbStamp = SFT_gbFolder + SFT_gbSuffix; | |
126 | ||
127 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
128 | AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer(); | |
129 | ||
130 | //-----------------STRANGE TASK---------------------------- | |
131 | AliAnalysisTaskFlowStrange *taskSel = new AliAnalysisTaskFlowStrange(Form("FS_%s",SFT_gbStamp.Data()) ); | |
132 | taskSel->SelectCollisionCandidates(SFT_gbTrigger); | |
133 | taskSel->SetReadESD(SFT_gbReadESD); | |
512ced40 | 134 | taskSel->SetPostMatched(SFT_gbPostMatched); |
ad90d46d | 135 | taskSel->SetReadMC(SFT_gbReadMC); |
136 | taskSel->SetAvoidExec(SFT_gbAvoidExec); | |
137 | taskSel->SetSkipSelection(SFT_gbSkipSelection); | |
138 | taskSel->SetSkipFlow(SFT_gbSkipFlow); | |
139 | taskSel->SetExtraEventRejection(SFT_gbExtraEventCut); | |
140 | taskSel->SetCentralityRange(SFT_gbCentMethod,SFT_gbCentPerMin,SFT_gbCentPerMax); | |
141 | if(SFT_gbRunPP) taskSel->Setpp(); | |
142 | if(SFT_gbRunPA) taskSel->SetpA(); | |
143 | taskSel->SetDebug(SFT_gbDebug); | |
144 | taskSel->SetK0L0(SFT_gbSpecie); | |
145 | taskSel->SetOnline( SFT_gbOnline ); | |
146 | taskSel->SetMass( SFT_MassBins(SFT_gbSpecie), | |
147 | SFT_MinMass(SFT_gbSpecie), | |
148 | SFT_MaxMass(SFT_gbSpecie) ); | |
149 | ||
150 | taskSel->SetWhichPsi(SFT_gbWhichPsi); | |
151 | taskSel->SetRFPFilterBit(SFT_gbRFPFilterBit); | |
152 | taskSel->SetRFPMinPt(SFT_gbRFPminPt); | |
153 | taskSel->SetRFPMaxPt(SFT_gbRFPmaxPt); | |
154 | taskSel->SetRFPMinEta(SFT_gbRFPminEta); | |
155 | taskSel->SetRFPMaxEta(SFT_gbRFPmaxEta); | |
156 | taskSel->SetRFPTPCSignal(SFT_gbRFPTPCsignal); | |
157 | taskSel->SetRFPMaxIPxy(SFT_gbRFPmaxIPxy); | |
158 | taskSel->SetRFPMaxIPz(SFT_gbRFPmaxIPz); | |
159 | taskSel->SetRFPMinTPCCls(SFT_gbRFPTPCncls); | |
160 | ||
161 | taskSel->SetDauUnTagProcedure(SFT_gbUntagDaughter); | |
512ced40 | 162 | taskSel->SetVertexZcut(SFT_gbVertexZcut); |
ad90d46d | 163 | |
164 | taskSel->SetDauMinNClsTPC(SFT_gbMinNClsTPC); | |
165 | taskSel->SetDauMinXRows(SFT_gbMinXRows); | |
166 | taskSel->SetDauMaxChi2PerNClsTPC(SFT_gbMaxChi2PerNClsTPC); | |
167 | taskSel->SetDauMinXRowsOverNClsFTPC(SFT_gbMinXRowsOverNClsFTPC); | |
168 | taskSel->SetDauMinEta(SFT_gbMinEta); | |
169 | taskSel->SetDauMaxEta(SFT_gbMaxEta); | |
170 | taskSel->SetDauMinPt(SFT_gbMinPt); | |
171 | taskSel->SetDauMinImpactParameterXY(SFT_gbMinImpactParameterXY); | |
172 | taskSel->SetDauMaxNSigmaPID(SFT_gbMaxNSigmaPID); | |
dba835f0 | 173 | taskSel->SetDauITSLayer(0,SFT_gbDauITS0On); |
174 | taskSel->SetDauITSLayer(1,SFT_gbDauITS1On); | |
175 | taskSel->SetDauITSLayer(2,SFT_gbDauITS2On); | |
176 | taskSel->SetDauITSLayer(3,SFT_gbDauITS3On); | |
177 | taskSel->SetDauITSLayer(4,SFT_gbDauITS4On); | |
178 | taskSel->SetDauITSLayer(5,SFT_gbDauITS5On); | |
ad90d46d | 179 | |
180 | taskSel->SetMaxRapidity(SFT_gbMaxRapidity); | |
181 | taskSel->SetMaxDCAdaughters(SFT_gbMaxDCAdaughters); | |
182 | taskSel->SetMinCosinePointingAngleXY(SFT_gbMinCosinePointingAngleXY); | |
183 | taskSel->SetMinQt(SFT_gbMinQt,SFT_gbQtPie); | |
184 | taskSel->SetMinRadXY(SFT_gbMinRadXY); | |
185 | taskSel->SetMaxDecayLength(SFT_gbMaxDecayLength); | |
186 | taskSel->SetMaxProductIPXY(SFT_gbMaxProductIPXY); | |
187 | taskSel->SetMinEta(SFT_gbMinEta); | |
188 | taskSel->SetMaxEta(SFT_gbMaxEta); | |
189 | taskSel->SetMinPt(SFT_gbMinPt); | |
190 | taskSel->SetUseFlowPackage(SFT_gbFlowPackage); | |
191 | ||
192 | taskSel->SetQAlevel(SFT_gbQA); | |
193 | if(SFT_gbVZEload.Length()>4) { | |
194 | TFile *ocalib = TFile::Open(SFT_gbVZEload); | |
195 | if(ocalib->IsOpen()) { | |
196 | TList *vzero = ocalib->Get("VZECALIB"); | |
197 | taskSel->LoadVZEResponse(vzero,SFT_gbVZEmb,SFT_gbVZEpdisk); | |
198 | } else { | |
199 | printf("ADDTASKFLOWSTRANGE COULD NOT OPEN %s. NO VZE CALIBRATION LOADED!\n",SFT_gbVZEload.Data()); | |
200 | } | |
201 | } | |
202 | printf("Loading %d %d %d %d as VZE configuration\n",SFT_gbV0CRingMin, SFT_gbV0CRingMax, SFT_gbV0ARingMin, SFT_gbV0ARingMax); | |
203 | taskSel->SetRFPVZERingRange( SFT_gbV0CRingMin, SFT_gbV0CRingMax, SFT_gbV0ARingMin, SFT_gbV0ARingMax ); | |
204 | taskSel->SetStoreVZEResponse(SFT_gbVZEsave); | |
205 | ||
206 | AliAnalysisDataContainer *cOutHist = mgr->CreateContainer(Form("FS_OH_%s",SFT_gbStamp.Data()), | |
207 | TList::Class(), | |
208 | AliAnalysisManager::kOutputContainer, | |
209 | Form("%s.root:Selector_%s",fileName.Data(), | |
210 | SFT_gbFolder.Data())); | |
211 | AliAnalysisDataContainer *exc_TPC = mgr->CreateContainer( Form("FS_TPC_%s",SFT_gbStamp.Data()), | |
212 | AliFlowEventSimple::Class(), | |
213 | AliAnalysisManager::kExchangeContainer ); | |
214 | AliAnalysisDataContainer *exc_VZE = mgr->CreateContainer( Form("FS_VZE_%s",SFT_gbStamp.Data()), | |
215 | AliFlowEventSimple::Class(), | |
216 | AliAnalysisManager::kExchangeContainer ); | |
217 | mgr->AddTask(taskSel); | |
218 | mgr->ConnectInput (taskSel,0,cinput1); | |
219 | mgr->ConnectOutput(taskSel,1,cOutHist); | |
220 | mgr->ConnectOutput(taskSel,2,exc_TPC); | |
221 | mgr->ConnectOutput(taskSel,3,exc_VZE); | |
222 | ||
223 | if(!SFT_gbFlowPackage) return; | |
224 | if( (!SFT_gbQCTPC) && (!SFT_gbSPVZE) && (!SFT_gbSPTPC) ) return; | |
225 | //-------------------FLOWPACKAGE TASKS---------------------------- | |
226 | AliFlowTrackSimpleCuts *filter[20], *filterhf[20][2]; // MASS BANDS | |
512ced40 RAB |
227 | int mbs = SFT_MassBands(SFT_gbSpecie); |
228 | if(SFT_gbPostMatched) mbs = 1; | |
229 | for(int mb=0; mb!=mbs; ++mb) { | |
ad90d46d | 230 | filter[mb] = new AliFlowTrackSimpleCuts( Form("Filter_MB%d",mb) ); |
231 | filter[mb]->SetEtaMin( -0.8 ); filter[mb]->SetEtaMax( +0.8 ); | |
512ced40 RAB |
232 | Double_t minmass = SFT_MassBandLowEdge(SFT_gbSpecie,mb); |
233 | Double_t maxmass = SFT_MassBandLowEdge(SFT_gbSpecie,mb+1); | |
234 | if(SFT_gbPostMatched) maxmass = SFT_MassBandLowEdge(SFT_gbSpecie,SFT_MassBands(SFT_gbSpecie)); | |
235 | filter[mb]->SetMassMin( minmass ); filter[mb]->SetMassMax( maxmass ); | |
ad90d46d | 236 | //half window for POIs |
237 | filterhf[mb][0] = new AliFlowTrackSimpleCuts( Form("Filterhf0_MB%d",mb) ); | |
238 | filterhf[mb][0]->SetEtaMin( +0.0 ); filterhf[mb][0]->SetEtaMax( +0.8 ); | |
512ced40 | 239 | filterhf[mb][0]->SetMassMin( minmass ); filterhf[mb][0]->SetMassMax( maxmass ); |
ad90d46d | 240 | filterhf[mb][1] = new AliFlowTrackSimpleCuts( Form("Filterhf1_MB%d",mb) ); |
241 | filterhf[mb][1]->SetEtaMin( -0.8 ); filterhf[mb][1]->SetEtaMax( -0.0 ); | |
512ced40 | 242 | filterhf[mb][1]->SetMassMin( minmass ); filterhf[mb][1]->SetMassMax( maxmass ); |
ad90d46d | 243 | if(SFT_gbQCTPC) { |
244 | SFT_AddQCmethod( Form("QCTPCMB%d",mb), exc_TPC, filter[mb]); // QC TPC | |
245 | } | |
246 | if(SFT_gbSPTPC) { | |
247 | SFT_AddSPmethod( Form("SPTPCMB%d",mb), exc_TPC, filterhf[mb][0], "Qa" ); // SP TPC Qa | |
248 | SFT_AddSPmethod( Form("SPTPCMB%d",mb), exc_TPC, filterhf[mb][1], "Qb" ); // SP TPC Qb | |
249 | SFT_AddSPmethod( Form("SPTPC2MB%d",mb), exc_TPC, filterhf[mb][0], "Qa", 0.2 ); // SP TPC Qa | |
250 | SFT_AddSPmethod( Form("SPTPC2MB%d",mb), exc_TPC, filterhf[mb][1], "Qb", 0.2 ); // SP TPC Qb | |
251 | SFT_AddSPmethod( Form("SPTPC4MB%d",mb), exc_TPC, filterhf[mb][0], "Qa", 0.4 ); // SP TPC Qa | |
252 | SFT_AddSPmethod( Form("SPTPC4MB%d",mb), exc_TPC, filterhf[mb][1], "Qb", 0.4 ); // SP TPC Qb | |
253 | } | |
c41a93af | 254 | if(SFT_gbMCEP) { |
255 | SFT_AddMCEPmethod( Form("MCEPMB%d",mb), exc_TPC, filter[mb]); // MCEP TPC | |
256 | } | |
ad90d46d | 257 | if(SFT_gbSPVZE) { |
258 | if(SFT_gbSPVZEhalf) { | |
259 | SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filterhf[mb][0], "Qa", 1.0 ); // SP VZE Qa | |
260 | SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filterhf[mb][1], "Qb", 1.0 ); // SP VZE Qa | |
261 | } else { | |
262 | SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filter[mb], "Qa", 1.0 ); // SP VZE Qa | |
263 | SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filter[mb], "Qb", 1.0 ); // SP VZE Qa | |
264 | } | |
265 | } | |
266 | } | |
267 | } | |
c41a93af | 268 | void SFT_AddMCEPmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL) { |
269 | TString fileName = AliAnalysisManager::GetCommonFileName(); | |
270 | TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic); | |
271 | TString myName = Form("%sv%d_%s",name,SFT_gbHarmonic,SFT_gbSuffix.Data()); | |
272 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
273 | AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myName.Data()), | |
274 | AliFlowEventSimple::Class(), | |
275 | AliAnalysisManager::kExchangeContainer ); | |
276 | AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()), | |
277 | NULL, cutsPOI); | |
278 | mgr->AddTask(tskFilter); | |
279 | mgr->ConnectInput( tskFilter,0,flowEvent); | |
280 | mgr->ConnectOutput(tskFilter,1,flowEvent2); | |
281 | AliAnalysisDataContainer *outQC = mgr->CreateContainer( myName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer, | |
282 | Form("%s:FlowStrange_MCEP_%s",fileName.Data(),myFolder.Data()) ); | |
283 | AliAnalysisTaskMCEventPlane *tskQC = new AliAnalysisTaskMCEventPlane( Form("TaskMCEP_%s",myName.Data()) ); | |
284 | tskQC->SetHarmonic(SFT_gbHarmonic); | |
285 | mgr->AddTask(tskQC); | |
286 | mgr->ConnectInput( tskQC,0,flowEvent2); | |
287 | mgr->ConnectOutput(tskQC,1,outQC); | |
288 | } | |
ad90d46d | 289 | void SFT_AddQCmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL) { |
290 | TString fileName = AliAnalysisManager::GetCommonFileName(); | |
291 | TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic); | |
292 | TString myName = Form("%sv%d_%s",name,SFT_gbHarmonic,SFT_gbSuffix.Data()); | |
293 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
294 | AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myName.Data()), | |
295 | AliFlowEventSimple::Class(), | |
296 | AliAnalysisManager::kExchangeContainer ); | |
297 | AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()), | |
298 | NULL, cutsPOI); | |
299 | mgr->AddTask(tskFilter); | |
300 | mgr->ConnectInput( tskFilter,0,flowEvent); | |
301 | mgr->ConnectOutput(tskFilter,1,flowEvent2); | |
302 | AliAnalysisDataContainer *outQC = mgr->CreateContainer( myName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer, | |
303 | Form("%s:FlowStrange_QC_%s",fileName.Data(),myFolder.Data()) ); | |
304 | AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants( Form("TaskQCumulants_%s",myName.Data()),kFALSE ); | |
305 | tskQC->SetApplyCorrectionForNUA(kTRUE); | |
306 | tskQC->SetHarmonic(SFT_gbHarmonic); | |
307 | tskQC->SetBookOnlyBasicCCH(SFT_gbShrinkFP); | |
308 | mgr->AddTask(tskQC); | |
309 | mgr->ConnectInput( tskQC,0,flowEvent2); | |
310 | mgr->ConnectOutput(tskQC,1,outQC); | |
311 | } | |
312 | void SFT_AddSPmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL, char *Qvector, Double_t gap=0.0) { | |
313 | TString fileName = AliAnalysisManager::GetCommonFileName(); | |
314 | TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic); | |
315 | TString myNameSP = Form("%sv%d%s_%s",name,SFT_gbHarmonic,Qvector,SFT_gbSuffix.Data()); | |
316 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
317 | AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myNameSP.Data()), | |
318 | AliFlowEventSimple::Class(), | |
319 | AliAnalysisManager::kExchangeContainer ); | |
320 | AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myNameSP.Data()), | |
321 | NULL, cutsPOI); | |
322 | tskFilter->SetSubeventEtaRange( -5.0, -gap, +gap, +5.0 ); | |
323 | mgr->AddTask(tskFilter); | |
324 | mgr->ConnectInput( tskFilter,0,flowEvent); | |
325 | mgr->ConnectOutput(tskFilter,1,flowEvent2); | |
326 | AliAnalysisDataContainer *outSP = mgr->CreateContainer( myNameSP.Data(),TList::Class(),AliAnalysisManager::kOutputContainer, | |
327 | Form("%s:FlowStrange_SP_%s",fileName.Data(),myFolder.Data()) ); | |
328 | AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct( Form("TaskScalarProduct_%s",myNameSP.Data()),kFALSE); | |
329 | tskSP->SetApplyCorrectionForNUA(kTRUE); | |
330 | tskSP->SetHarmonic(SFT_gbHarmonic); | |
331 | tskSP->SetTotalQvector(Qvector); | |
332 | tskSP->SetBookOnlyBasicCCH(SFT_gbShrinkFP); | |
333 | mgr->AddTask(tskSP); | |
334 | mgr->ConnectInput( tskSP,0,flowEvent2); | |
335 | mgr->ConnectOutput(tskSP,1,outSP); | |
336 | } | |
337 | double SFT_MassBandLowEdge( int nv0, int mb ) { | |
512ced40 RAB |
338 | if(nv0>10&&mb==0) return -5; |
339 | if(nv0>10&&mb==1) return +5; | |
ad90d46d | 340 | switch(nv0) { |
341 | case(0): | |
342 | double lowEdge[14]={0.398, 0.420, 0.444, 0.468, 0.486, | |
343 | 0.490, 0.494, 0.498, 0.502, 0.506, | |
344 | 0.524, 0.548, 0.572, 0.598}; | |
345 | break; | |
346 | default: | |
347 | double lowEdge[13]={1.084, 1.094, 1.104, 1.110, 1.114, | |
348 | 1.116, 1.118, 1.122, 1.128, 1.138, | |
349 | 1.148, 1.158, 1.168}; | |
350 | break; | |
351 | } | |
ad90d46d | 352 | return lowEdge[mb]; |
353 | } | |
354 | int SFT_MassBands( int nv0 ) { | |
355 | int bands=1; | |
356 | switch(nv0) { | |
357 | case(0): | |
358 | bands = 13; | |
359 | break; | |
360 | default: | |
361 | bands = 12; | |
362 | } | |
363 | if(nv0>10) bands=1; | |
364 | return bands; | |
365 | } | |
366 | int SFT_MassBins( int nv0 ) { | |
367 | int bins=100; | |
368 | switch(nv0) { | |
369 | case(0)://kZERO | |
370 | bins=100; | |
371 | break; | |
372 | default://LAMBDA | |
373 | bins=84; | |
374 | break; | |
375 | } | |
376 | if(nv0>10) bins=100;//CHARGED | |
377 | return bins; | |
378 | } | |
379 | double SFT_MinMass( int nv0 ) { | |
380 | return SFT_MassBandLowEdge( nv0, 0 ); | |
381 | } | |
382 | double SFT_MaxMass( int nv0 ) { | |
383 | return SFT_MassBandLowEdge( nv0, SFT_MassBands(nv0) ); | |
384 | } | |
385 | void SFT_PrintConfig() { | |
386 | printf("***********************************\n"); | |
387 | printf("* STRANGE FLOW TASK CONFIGURATION *\n"); | |
388 | printf("* SUFFIX %8s *\n", SFT_gbSuffix.Data() ); | |
389 | printf("* TRIGGER %8d *\n", SFT_gbTrigger ); | |
390 | printf("* RUNPP %3d *\n", SFT_gbRunPP ); | |
391 | printf("* RUNPA %3d *\n", SFT_gbRunPA ); | |
392 | printf("* AVOIDEXEC %3d *\n", SFT_gbAvoidExec ); | |
393 | printf("* ESD %3d *\n", SFT_gbReadESD ); | |
394 | printf("* MC %3d *\n", SFT_gbReadMC ); | |
512ced40 | 395 | printf("* POSTMATCHED %3d *\n", SFT_gbPostMatched ); |
ad90d46d | 396 | printf("* EXTRAEVENTCUT %3d *\n", SFT_gbExtraEventCut ); |
397 | printf("* CENTMETHOD %8s *\n", SFT_gbCentMethod.Data() ); | |
398 | printf("* CENTPERMIN %3d *\n", SFT_gbCentPerMin ); | |
399 | printf("* CENTPERMAX %3d *\n", SFT_gbCentPerMax ); | |
c41a93af | 400 | printf("* VERTEXZ %+9.6f *\n", SFT_gbVertexZcut ); |
ad90d46d | 401 | printf("* SPECIE %3d *\n", SFT_gbSpecie ); |
402 | printf("* HOMEMADE %3d *\n", SFT_gbHomemade ); | |
403 | printf("* ONLINE %3d *\n", SFT_gbOnline ); | |
404 | printf("* MINNCLSTTPC %3d *\n", SFT_gbMinNClsTPC ); | |
405 | printf("* MINXROWS %3d *\n", SFT_gbMinXRows ); | |
406 | printf("* MAXCHI2NCLSTPC %+9.6f *\n", SFT_gbMaxChi2PerNClsTPC ); | |
407 | printf("* MINXROWSNFCLSTPC %+9.6f *\n", SFT_gbMinXRowsOverNClsFTPC ); | |
408 | printf("* MINETA %+9.6f *\n", SFT_gbMinEta ); | |
409 | printf("* MAXETA %+9.6f *\n", SFT_gbMaxEta ); | |
410 | printf("* MINPT %+9.6f *\n", SFT_gbMinPt ); | |
411 | printf("* UNTAG %+9.6f *\n", SFT_gbUntagDaughter ); | |
412 | printf("* MIND0XY %+9.6f *\n", SFT_gbMinImpactParameterXY ); | |
413 | printf("* MAXSIGMAPID %+9.6f *\n", SFT_gbMaxNSigmaPID ); | |
414 | printf("* MAXY %+9.6f *\n", SFT_gbMaxRapidity ); | |
415 | printf("* MAXDCA %+9.6f *\n", SFT_gbMaxDCAdaughters ); | |
416 | printf("* MINCTP %+9.6f *\n", SFT_gbMinCosinePointingAngleXY ); | |
417 | printf("* MINQT %+9.6f *\n", SFT_gbMinQt ); | |
418 | printf("* QTPIE %+9.6f *\n", SFT_gbQtPie ); | |
419 | printf("* MINRADXY %+9.6f *\n", SFT_gbMinRadXY ); | |
420 | printf("* MAXDL %+9.6f *\n", SFT_gbMaxDecayLength ); | |
421 | printf("* D0D0XY %+9.6f *\n", SFT_gbMaxProductIPXY ); | |
422 | printf("* DEBUG %3d *\n", SFT_gbDebug ); | |
423 | printf("* QA %3d *\n", SFT_gbQA ); | |
424 | printf("* SKIPSELECTION %3d *\n", SFT_gbSkipSelection ); | |
425 | printf("* SKIPFLOW %3d *\n", SFT_gbSkipFlow ); | |
426 | printf("* USEFP %3d *\n", SFT_gbFlowPackage ); | |
427 | printf("* SPVZE %3d *\n", SFT_gbSPVZE ); | |
428 | printf("* SPVZEHALF %3d *\n", SFT_gbSPVZEhalf ); | |
429 | printf("* SPTPC %3d *\n", SFT_gbSPTPC ); | |
430 | printf("* QCTPC %3d *\n", SFT_gbQCTPC ); | |
c41a93af | 431 | printf("* MCEP %3d *\n", SFT_gbMCEP ); |
ad90d46d | 432 | printf("* SHRINKFP %3d *\n", SFT_gbShrinkFP ); |
433 | printf("* RFFILTERBIT %3d *\n", SFT_gbRFPFilterBit ); | |
434 | printf("* RFMINPT %+9.6f *\n", SFT_gbRFPminPt ); | |
435 | printf("* RFMAXPT %+9.6f *\n", SFT_gbRFPmaxPt ); | |
436 | printf("* RFMINETA %+9.6f *\n", SFT_gbRFPminEta ); | |
437 | printf("* RFMAXETA %+9.6f *\n", SFT_gbRFPmaxEta ); | |
438 | printf("* RFTPCSIGNAL %+9.6f *\n", SFT_gbRFPTPCsignal ); | |
439 | printf("* RFMAXIPXY %+9.6f *\n", SFT_gbRFPmaxIPxy ); | |
440 | printf("* RFMAXIPZ %+9.6f *\n", SFT_gbRFPmaxIPz ); | |
441 | printf("* RFTPCNCLS %3d *\n", SFT_gbRFPTPCncls ); | |
c41a93af | 442 | printf("* WHICHPSI %3d *\n", SFT_gbWhichPsi ); |
ad90d46d | 443 | printf("* VZELOAD %8s *\n", SFT_gbVZEload.Data() ); |
444 | printf("* VZELINEAR %3d *\n", SFT_gbVZEmb ); | |
445 | printf("* VZEPERDISK %3d *\n", SFT_gbVZEpdisk ); | |
446 | printf("* VZESAVE %3d *\n", SFT_gbVZEsave ); | |
dba835f0 | 447 | printf("* DAUITS0 %3d *\n", SFT_gbDauITS0On ); |
448 | printf("* DAUITS1 %3d *\n", SFT_gbDauITS1On ); | |
449 | printf("* DAUITS2 %3d *\n", SFT_gbDauITS2On ); | |
450 | printf("* DAUITS3 %3d *\n", SFT_gbDauITS3On ); | |
451 | printf("* DAUITS4 %3d *\n", SFT_gbDauITS4On ); | |
452 | printf("* DAUITS5 %3d *\n", SFT_gbDauITS5On ); | |
ad90d46d | 453 | printf("***********************************\n"); |
454 | } | |
455 | void SFT_ReadConfig(TString ipf) { | |
456 | SFT_ResetVars(); | |
457 | printf("Reading %s\n",ipf.Data()); | |
458 | ifstream input(ipf.Data()); | |
459 | TString varname; | |
460 | Double_t vardouble; | |
461 | Int_t varint; | |
462 | UInt_t varuint; | |
463 | Bool_t varbool; | |
464 | for(;input.good();) { | |
465 | input >> varname; | |
466 | if(!input.good()) { | |
467 | break; | |
468 | } else if(!varname.CompareTo("SUFFIX")) { | |
469 | input >> SFT_gbSuffix; | |
470 | } else if(!varname.CompareTo("TRIGGER")) { | |
471 | input >> SFT_gbTrigger; | |
472 | } else if(!varname.CompareTo("RUNPP")) { | |
473 | input >> SFT_gbRunPP; | |
474 | } else if(!varname.CompareTo("RUNPA")) { | |
475 | input >> SFT_gbRunPA; | |
476 | } else if(!varname.CompareTo("AVOIDEXEC")) { | |
477 | input >> SFT_gbAvoidExec; | |
478 | } else if(!varname.CompareTo("ESD")) { | |
479 | input >> SFT_gbReadESD; | |
480 | } else if(!varname.CompareTo("MC")) { | |
481 | input >> SFT_gbReadMC; | |
482 | } else if(!varname.CompareTo("EXTRAEVENTCUT")) { | |
483 | input >> SFT_gbExtraEventCut; | |
484 | } else if(!varname.CompareTo("CENTMETHOD")) { | |
485 | input >> SFT_gbCentMethod; | |
486 | } else if(!varname.CompareTo("CENTPERMIN")) { | |
487 | input >> SFT_gbCentPerMin; | |
488 | } else if(!varname.CompareTo("CENTPERMAX")) { | |
489 | input >> SFT_gbCentPerMax; | |
490 | } else if(!varname.CompareTo("SPECIE")) { | |
491 | input >> SFT_gbSpecie; | |
492 | } else if(!varname.CompareTo("HOMEMADE")) { | |
493 | input >> SFT_gbHomemade; | |
494 | } else if(!varname.CompareTo("ONLINE")) { | |
495 | input >> SFT_gbOnline; | |
496 | } else if(!varname.CompareTo("MINNCLSTTPC")) { | |
497 | input >> SFT_gbMinNClsTPC; | |
498 | } else if(!varname.CompareTo("MINXROWS")) { | |
499 | input >> SFT_gbMinXRows; | |
500 | } else if(!varname.CompareTo("MAXCHI2NCLSTPC")) { | |
501 | input >> SFT_gbMaxChi2PerNClsTPC; | |
502 | } else if(!varname.CompareTo("MINXROWSNFCLSTPC")) { | |
503 | input >> SFT_gbMinXRowsOverNClsFTPC; | |
504 | } else if(!varname.CompareTo("MINETA")) { | |
505 | input >> SFT_gbMinEta; | |
506 | } else if(!varname.CompareTo("MAXETA")) { | |
507 | input >> SFT_gbMaxEta; | |
508 | } else if(!varname.CompareTo("MINPT")) { | |
509 | input >> SFT_gbMinPt; | |
510 | } else if(!varname.CompareTo("MIND0XY")) { | |
511 | input >> SFT_gbMinImpactParameterXY; | |
512 | } else if(!varname.CompareTo("MAXSIGMAPID")) { | |
513 | input >> SFT_gbMaxNSigmaPID; | |
514 | } else if(!varname.CompareTo("MAXY")) { | |
515 | input >> SFT_gbMaxRapidity; | |
516 | } else if(!varname.CompareTo("MAXDCA")) { | |
517 | input >> SFT_gbMaxDCAdaughters; | |
518 | } else if(!varname.CompareTo("MINCTP")) { | |
519 | input >> SFT_gbMinCosinePointingAngleXY; | |
520 | } else if(!varname.CompareTo("MINQT")) { | |
521 | input >> SFT_gbMinQt; | |
522 | } else if(!varname.CompareTo("QTPIE")) { | |
523 | input >> SFT_gbQtPie; | |
524 | } else if(!varname.CompareTo("MINRADXY")) { | |
525 | input >> SFT_gbMinRadXY; | |
526 | } else if(!varname.CompareTo("MAXDL")) { | |
527 | input >> SFT_gbMaxDecayLength; | |
528 | } else if(!varname.CompareTo("D0D0XY")) { | |
529 | input >> SFT_gbMaxProductIPXY; | |
530 | } else if(!varname.CompareTo("DEBUG")) { | |
531 | input >> SFT_gbDebug; | |
532 | } else if(!varname.CompareTo("QA")) { | |
533 | input >> SFT_gbQA; | |
534 | } else if(!varname.CompareTo("SKIPSELECTION")) { | |
535 | input >> SFT_gbSkipSelection; | |
536 | } else if(!varname.CompareTo("SKIPFLOW")) { | |
537 | input >> SFT_gbSkipFlow; | |
538 | } else if(!varname.CompareTo("USEFP")) { | |
539 | input >> SFT_gbFlowPackage; | |
540 | } else if(!varname.CompareTo("SPVZE")) { | |
541 | input >> SFT_gbSPVZE; | |
542 | } else if(!varname.CompareTo("SPTPC")) { | |
543 | input >> SFT_gbSPTPC; | |
544 | } else if(!varname.CompareTo("SPVZEHALF")) { | |
545 | input >> SFT_gbSPVZEhalf; | |
546 | } else if(!varname.CompareTo("QCTPC")) { | |
547 | input >> SFT_gbQCTPC; | |
c41a93af | 548 | } else if(!varname.CompareTo("MCEP")) { |
549 | input >> SFT_gbMCEP; | |
ad90d46d | 550 | } else if(!varname.CompareTo("SHRINKFP")) { |
512ced40 | 551 | input >> SFT_gbShrinkFP; |
ad90d46d | 552 | } else if(!varname.CompareTo("RFFILTERBIT")) { |
553 | input >> SFT_gbRFPFilterBit; | |
554 | } else if(!varname.CompareTo("RFMINPT")) { | |
555 | input >> SFT_gbRFPminPt; | |
556 | } else if(!varname.CompareTo("RFMAXPT")) { | |
557 | input >> SFT_gbRFPmaxPt; | |
558 | } else if(!varname.CompareTo("RFMINETA")) { | |
559 | input >> SFT_gbRFPminEta; | |
560 | } else if(!varname.CompareTo("RFMAXETA")) { | |
561 | input >> SFT_gbRFPmaxEta; | |
562 | } else if(!varname.CompareTo("RFTPCSIGNAL")) { | |
563 | input >> SFT_gbRFPTPCsignal; | |
564 | } else if(!varname.CompareTo("RFMAXIPXY")) { | |
565 | input >> SFT_gbRFPmaxIPxy; | |
566 | } else if(!varname.CompareTo("RFMAXIPZ")) { | |
567 | input >> SFT_gbRFPmaxIPz; | |
568 | } else if(!varname.CompareTo("RFTPCNCLS")) { | |
569 | input >> SFT_gbRFPTPCncls; | |
570 | } else if(!varname.CompareTo("VZELOAD")) { | |
571 | input >> SFT_gbVZEload; | |
572 | } else if(!varname.CompareTo("VZELINEAR")) { | |
573 | input >> SFT_gbVZEmb; | |
574 | } else if(!varname.CompareTo("VZEPERDISK")) { | |
575 | input >> SFT_gbVZEpdisk; | |
576 | } else if(!varname.CompareTo("VZESAVE")) { | |
577 | input >> SFT_gbVZEsave; | |
578 | } else if(!varname.CompareTo("ALLCC")) { | |
579 | input >> SFT_gbAllCC; | |
580 | } else if(!varname.CompareTo("UNTAG")) { | |
581 | input >> SFT_gbUntagDaughter; | |
512ced40 RAB |
582 | } else if(!varname.CompareTo("POSTMATCHED")) { |
583 | input >> SFT_gbPostMatched; | |
584 | } else if(!varname.CompareTo("VERTEXZ")) { | |
585 | input >> SFT_gbVertexZcut; | |
c41a93af | 586 | } else if(!varname.CompareTo("WHICHPSI")) { |
587 | input >> SFT_gbWhichPsi; | |
dba835f0 | 588 | } else if(!varname.CompareTo("DAUITS0")) { |
589 | input >> SFT_gbDauITS0On; | |
590 | } else if(!varname.CompareTo("DAUITS1")) { | |
591 | input >> SFT_gbDauITS1On; | |
592 | } else if(!varname.CompareTo("DAUITS2")) { | |
593 | input >> SFT_gbDauITS2On; | |
594 | } else if(!varname.CompareTo("DAUITS3")) { | |
595 | input >> SFT_gbDauITS3On; | |
596 | } else if(!varname.CompareTo("DAUITS4")) { | |
597 | input >> SFT_gbDauITS4On; | |
598 | } else if(!varname.CompareTo("DAUITS5")) { | |
599 | input >> SFT_gbDauITS5On; | |
ad90d46d | 600 | } else { |
601 | printf("I dont understand %s\n",varname.Data()); | |
602 | } | |
603 | } | |
604 | } | |
605 | void SFT_ResetVars() { | |
606 | SFT_gbTrigger=1; | |
607 | SFT_gbReadESD=0; | |
608 | SFT_gbReadMC=0; | |
609 | SFT_gbMatchMC=0; | |
610 | SFT_gbAvoidExec=0; | |
611 | SFT_gbExtraEventCut=0; | |
612 | SFT_gbCentMethod="V0MTRK"; | |
613 | SFT_gbCentPerMin=0; | |
614 | SFT_gbCentPerMax=100; | |
615 | SFT_gbRunPP=0; | |
616 | SFT_gbRunPA=0; | |
617 | SFT_gbSpecie=0; | |
618 | SFT_gbHomemade=0; | |
619 | SFT_gbOnline=0; | |
620 | SFT_gbMinNClsTPC=70; | |
621 | SFT_gbMinXRows=70; | |
622 | SFT_gbMaxChi2PerNClsTPC=4.0; | |
623 | SFT_gbMinXRowsOverNClsFTPC=0.8; | |
624 | SFT_gbMinEta=-0.8; | |
625 | SFT_gbMaxEta=+0.8; | |
626 | SFT_gbMinPt=0.1; | |
627 | SFT_gbMinImpactParameterXY=0.1; | |
628 | SFT_gbMaxNSigmaPID=3.0; | |
629 | SFT_gbMaxRapidity=0.5; | |
630 | SFT_gbMaxDCAdaughters=1.0; | |
631 | SFT_gbMinCosinePointingAngleXY=0.998; | |
632 | SFT_gbMinQt=0.2; | |
633 | SFT_gbQtPie=kTRUE; | |
634 | SFT_gbMinRadXY=5.0; | |
635 | SFT_gbMaxDecayLength=3.0; | |
636 | SFT_gbMaxProductIPXY=0.0; | |
637 | SFT_gbDebug=0; | |
638 | SFT_gbQA=0; | |
639 | SFT_gbFolder="FlowStrange"; | |
640 | SFT_gbSuffix="NOTFOUND"; | |
641 | SFT_gbRFPFilterBit=1; | |
642 | SFT_gbRFPminPt=0.2; | |
643 | SFT_gbRFPmaxPt=5.0; | |
644 | SFT_gbRFPminEta=-0.8; | |
645 | SFT_gbRFPmaxEta=+0.8; | |
646 | SFT_gbRFPTPCsignal=10; | |
647 | SFT_gbRFPmaxIPxy=2.4; | |
648 | SFT_gbRFPmaxIPz=3.2; | |
649 | SFT_gbRFPTPCncls=70; | |
650 | SFT_gbAllCC=0; | |
651 | SFT_gbSkipSelection=0; | |
652 | SFT_gbSkipFlow=0; | |
653 | SFT_gbWhichPsi=2; | |
654 | SFT_gbFlowPackage=0; | |
655 | SFT_gbSPVZE=0; | |
656 | SFT_gbSPVZEhalf=kFALSE; | |
657 | SFT_gbSPTPC=0; | |
658 | SFT_gbQCTPC=0; | |
c41a93af | 659 | SFT_gbMCEP=0; |
ad90d46d | 660 | SFT_gbHarmonic=2; |
661 | SFT_gbVZEload="no"; | |
662 | SFT_gbVZEsave=0; | |
663 | SFT_gbVZEmb=0; | |
664 | SFT_gbVZEpdisk=0; | |
665 | SFT_gbUntagDaughter=kTRUE; | |
512ced40 | 666 | SFT_gbPostMatched=kFALSE; |
ad90d46d | 667 | SFT_gbShrinkFP=kTRUE; |
512ced40 | 668 | SFT_gbVertexZcut=10.0; |
dba835f0 | 669 | SFT_gbDauITS0On=-1; |
670 | SFT_gbDauITS1On=-1; | |
671 | SFT_gbDauITS2On=-1; | |
672 | SFT_gbDauITS3On=-1; | |
673 | SFT_gbDauITS4On=-1; | |
674 | SFT_gbDauITS5On=-1; | |
ad90d46d | 675 | } |