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