-void AddTaskFlowStrange(int trigger, int centrMin, int centrMax, int harmonic=2) {\r
- AddStrangeWagon(trigger,centrMin,centrMax,"K0",Form("K%d%dc%d",centrMin,centrMax,0),0,0,"V0M",harmonic);\r
- AddStrangeWagon(trigger,centrMin,centrMax,"K0",Form("K%d%dc%d",centrMin,centrMax,1),0,1,"V0M",harmonic);\r
- AddStrangeWagon(trigger,centrMin,centrMax,"K0",Form("K%d%dc%d",centrMin,centrMax,2),0,2,"V0M",harmonic);\r
- AddStrangeWagon(trigger,centrMin,centrMax,"K0",Form("K%d%dc%dTRK",centrMin,centrMax,1),0,1,"TRK",harmonic);\r
- AddStrangeWagon(trigger,centrMin,centrMax,"L0",Form("L%d%dc%d",centrMin,centrMax,0),1,0,"V0M",harmonic);\r
- AddStrangeWagon(trigger,centrMin,centrMax,"L0",Form("L%d%dc%d",centrMin,centrMax,1),1,1,"V0M",harmonic);\r
- AddStrangeWagon(trigger,centrMin,centrMax,"L0",Form("L%d%dc%d",centrMin,centrMax,2),1,2,"V0M",harmonic);\r
- AddStrangeWagon(trigger,centrMin,centrMax,"L0",Form("L%d%dc%dTRK",centrMin,centrMax,1),1,1,"TRK",harmonic);\r
-}\r
-void AddStrangeWagon(int trigger, float centrMin, float centrMax, TString folderName="myFolder", TString suffixName="mySuffix", \r
- int specie=0, int cuts=1, char* MULT="V0M", int harmonic=2) {\r
- TString fileName = AliAnalysisManager::GetCommonFileName();\r
- fileName.ReplaceAll(".root","");\r
-\r
- //-E-V-E-N-T- -c-u-t-s--------------------------------------------------------\r
- AliFlowEventCuts* cutsEvent = new AliFlowEventCuts(Form("event_cuts_%s",suffixName.Data()));\r
- cutsEvent->SetCentralityPercentileRange(centrMin,centrMax);\r
- if(MULT=="V0M")\r
- cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kV0);\r
- else\r
- cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kTPConly);\r
- cutsEvent->SetRefMultMethod(AliFlowEventCuts::kSPDtracklets);\r
- cutsEvent->SetNContributorsRange(2);\r
- cutsEvent->SetPrimaryVertexZrange(-9.5,+9.5);\r
-\r
- //-R-P---c-u-t-s--------------------------------------------------------------\r
- AliFlowTrackCuts *cutsRPTPC = AliFlowTrackCuts::GetStandardTPCStandaloneTrackCuts();\r
- cutsRPTPC->SetParamType( AliFlowTrackCuts::kGlobal );\r
- cutsRPTPC->SetAODfilterBit(1); // for AOD compatibility\r
- AliFlowTrackCuts *cutsRPVZE = AliFlowTrackCuts::GetStandardVZEROOnlyTrackCuts();\r
-\r
- //-D-A-U-G-H-T-E-R-S---c-u-t-s------------------------------------------------\r
- AliESDtrackCuts* cutsDaughter = new AliESDtrackCuts(Form("daughter_cuts_%s",suffixName.Data()) );\r
- cutsDaughter->SetPtRange(0.2,10.0);\r
- cutsDaughter->SetEtaRange(-0.8, 0.8 );\r
- cutsDaughter->SetMinNClustersTPC(80);\r
- cutsDaughter->SetMaxChi2PerClusterTPC(4.0);\r
- cutsDaughter->SetRequireTPCRefit(kTRUE);\r
- cutsDaughter->SetAcceptKinkDaughters(kFALSE);\r
-\r
- AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
- AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();\r
-\r
- //-----------------STRANGE TASK----------------------------\r
- AliAnalysisTaskFlowStrange *taskSel = new AliAnalysisTaskFlowStrange(Form("Strange_%s",suffixName.Data()),\r
- cutsEvent, cutsRPTPC, cutsRPVZE,\r
- cutsDaughter );\r
- taskSel->SelectCollisionCandidates(trigger);\r
- //taskSel->SetDebug();\r
- taskSel->SetCuts2010(cuts);\r
- taskSel->SetK0L0(specie);\r
- //printf( "CMM %d %f %f\n", MassBins(specie), MinMass(specie), MaxMass(specie) );\r
- taskSel->SetCommonConstants( MassBins(specie), MinMass(specie), MaxMass(specie) );\r
- AliAnalysisDataContainer *cOutHist = mgr->CreateContainer(Form("OutHistos_%s",suffixName.Data()),\r
- TList::Class(),\r
- AliAnalysisManager::kOutputContainer,\r
- Form("%s.root:Selector_%s",fileName.Data(),\r
- folderName.Data()));\r
- AliAnalysisDataContainer *exc_TPC = mgr->CreateContainer( Form("TPCEventWithCandidates_%s",suffixName.Data()),\r
- AliFlowEventSimple::Class(),\r
- AliAnalysisManager::kExchangeContainer );\r
- AliAnalysisDataContainer *exc_VZE = mgr->CreateContainer( Form("VZEEventWithCandidates_%s",suffixName.Data()),\r
- AliFlowEventSimple::Class(),\r
- AliAnalysisManager::kExchangeContainer );\r
- mgr->AddTask(taskSel);\r
- mgr->ConnectInput (taskSel,0,cinput1);\r
- mgr->ConnectOutput(taskSel,1,exc_TPC);\r
- mgr->ConnectOutput(taskSel,2,exc_VZE);\r
- mgr->ConnectOutput(taskSel,3,cOutHist);\r
-\r
- //-------------------FLOW TASKS----------------------------\r
- AliFlowTrackSimpleCuts *filter[15], *filterhf[15][2]; // MASS BANDS\r
- for(int mb=0; mb!=MassBands(0); ++mb) {\r
- filter[mb] = new AliFlowTrackSimpleCuts( Form("Filter_MB%d",mb) );\r
- filter[mb]->SetEtaMin( -0.8 ); filter[mb]->SetEtaMax( +0.8 );\r
- filter[mb]->SetMassMin( MassBandLowEdge(specie,mb) ); filter[mb]->SetMassMax( MassBandLowEdge(specie,mb+1) );\r
-\r
- filterhf[mb][0] = new AliFlowTrackSimpleCuts( Form("Filterhf0_MB%d",mb) );\r
- filterhf[mb][0]->SetEtaMin( 0.0 ); filterhf[mb][0]->SetEtaMax( +0.8 );\r
- filterhf[mb][0]->SetMassMin( MassBandLowEdge(specie,mb) ); filterhf[mb][0]->SetMassMax( MassBandLowEdge(specie,mb+1) );\r
-\r
- filterhf[mb][1] = new AliFlowTrackSimpleCuts( Form("Filterhf1_MB%d",mb) );\r
- filterhf[mb][1]->SetEtaMin( -0.8 ); filterhf[mb][1]->SetEtaMax( 0.0 );\r
- filterhf[mb][1]->SetMassMin( MassBandLowEdge(specie,mb) ); filterhf[mb][1]->SetMassMax( MassBandLowEdge(specie,mb+1) );\r
-\r
- AddQCmethod( Form("QCTPCMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_TPC, filter[mb]); // QC TPC\r
- AddSPmethod( Form("SPTPCMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_TPC, filterhf[mb][0], "Qa" ); // SP TPC Qa\r
- AddSPmethod( Form("SPTPCMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_TPC, filterhf[mb][1], "Qb" ); // SP TPC Qb\r
- AddSPmethod( Form("SPVZEMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_VZE, filter[mb], "Qa" ); // SP VZE Qa\r
- AddSPmethod( Form("SPVZEMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_VZE, filter[mb], "Qb" ); // SP VZE Qa\r
- }\r
-}\r
-\r
-void AddQCmethod(char *name, TString myFolder, char *thecuts, int harmonic, \r
- AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL) {\r
- TString fileName = AliAnalysisManager::GetCommonFileName();\r
- myFolder.Append( Form("v%d",harmonic) );\r
- TString myName = Form("%sv%d_%s",name,harmonic,thecuts);\r
- AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
- AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myName.Data()),\r
- AliFlowEventSimple::Class(),\r
- AliAnalysisManager::kExchangeContainer );\r
- AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()),\r
- NULL, cutsPOI);\r
- mgr->AddTask(tskFilter);\r
- mgr->ConnectInput( tskFilter,0,flowEvent);\r
- mgr->ConnectOutput(tskFilter,1,flowEvent2);\r
- AliAnalysisDataContainer *outQC = mgr->CreateContainer( myName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,\r
- Form("%s:FlowStrange_QC_%s",fileName.Data(),myFolder.Data()) );\r
- AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants( Form("TaskQCumulants_%s",myName.Data()),kFALSE );\r
- tskQC->SetApplyCorrectionForNUA(kTRUE);\r
- tskQC->SetHarmonic(harmonic);\r
- tskQC->SetBookOnlyBasicCCH(kTRUE);\r
- mgr->AddTask(tskQC);\r
- mgr->ConnectInput( tskQC,0,flowEvent2);\r
- mgr->ConnectOutput(tskQC,1,outQC);\r
-}\r
-\r
-\r
-void AddSPmethod(char *name, TString myFolder, char *thecuts, int harmonic,\r
- AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL,\r
- char *Qvector) {\r
- TString fileName = AliAnalysisManager::GetCommonFileName();\r
- myFolder.Append( Form("v%d",harmonic) );\r
- TString myNameSP = Form("%sv%d%s_%s",name,harmonic,Qvector,thecuts);\r
- AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
- AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myNameSP.Data()),\r
- AliFlowEventSimple::Class(),\r
- AliAnalysisManager::kExchangeContainer );\r
- AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myNameSP.Data()),\r
- NULL, cutsPOI);\r
- tskFilter->SetSubeventEtaRange( -5.0, 0.0, 0.0, +5.0 );\r
- mgr->AddTask(tskFilter);\r
- mgr->ConnectInput( tskFilter,0,flowEvent);\r
- mgr->ConnectOutput(tskFilter,1,flowEvent2);\r
- AliAnalysisDataContainer *outSP = mgr->CreateContainer( myNameSP.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,\r
- Form("%s:FlowStrange_SP_%s",fileName.Data(),myFolder.Data()) );\r
- AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct( Form("TaskScalarProduct_%s",myNameSP.Data()),kFALSE);\r
- tskSP->SetApplyCorrectionForNUA(kTRUE);\r
- tskSP->SetHarmonic(harmonic);\r
- tskSP->SetTotalQvector(Qvector);\r
- tskSP->SetBookOnlyBasicCCH(kTRUE);\r
- mgr->AddTask(tskSP);\r
- mgr->ConnectInput( tskSP,0,flowEvent2);\r
- mgr->ConnectOutput(tskSP,1,outSP);\r
-}\r
-\r
-double MassBandLowEdge( int nv0, int mb ) {\r
- if(nv0==0) {\r
- double lowEdge[15+1]={ 0.452, 0.462, 0.472, 0.482, 0.489, 0.492, 0.495, 0.498,\r
- 0.501, 0.504, 0.507, 0.514, 0.524, 0.534, 0.544, 0.554 };\r
- } if(nv0==1) {\r
- double lowEdge[15+1]={ 1.094, 1.099, 1.104, 1.109, 1.112, 1.114, 1.115, 1.116, \r
- 1.117, 1.118, 1.120, 1.123, 1.128, 1.133, 1.138, 1.143 };\r
- }\r
- return lowEdge[mb];\r
-}\r
-\r
-int MassBands( int nv0 ) {\r
- if(nv0==0) {\r
- return 15;\r
- } else if(nv0==1) {\r
- return 15;\r
- }\r
-}\r
-\r
-int MassBins( int nv0 ) {\r
- if(nv0==0) {\r
- return 102;\r
- } else if(nv0==1) {\r
- return 49;\r
- }\r
-}\r
-\r
-double MinMass( int nv0 ) {\r
- return MassBandLowEdge( nv0, 0 );\r
-}\r
-\r
-double MaxMass( int nv0 ) {\r
- return MassBandLowEdge( nv0, MassBands(nv0) );\r
-}\r
+UInt_t SFT_gbTrigger;
+Bool_t SFT_gbReadESD;
+Bool_t SFT_gbReadMC;
+Int_t SFT_gbMatchMC;
+Bool_t SFT_gbAvoidExec;
+Bool_t SFT_gbSkipCentrality;
+Bool_t SFT_gbExtraEventCut;
+TString SFT_gbCentMethod;
+Int_t SFT_gbCentPerMin,SFT_gbCentPerMax;
+Bool_t SFT_gbRunPP;
+Bool_t SFT_gbRunPA;
+Int_t SFT_gbSpecie;
+Bool_t SFT_gbHomemade;
+Bool_t SFT_gbOnline;
+Int_t SFT_gbMinNClsTPC;
+Int_t SFT_gbMinNClsITS;
+Int_t SFT_gbMinXRows;
+Double_t SFT_gbMaxChi2PerNClsTPC;
+Double_t SFT_gbMinXRowsOverNClsFTPC;
+Double_t SFT_gbMinEta;
+Double_t SFT_gbMaxEta;
+Double_t SFT_gbMinPt;
+Double_t SFT_gbMinImpactParameterXY;
+Double_t SFT_gbMaxNSigmaPID;
+Double_t SFT_gbMaxRapidity;
+Double_t SFT_gbMaxDCAdaughters;
+Double_t SFT_gbMinCosinePointingAngleXY;
+Double_t SFT_gbPIDPt;
+Double_t SFT_gbMinQt;
+Bool_t SFT_gbQtPie;
+Double_t SFT_gbMinRadXY;
+Double_t SFT_gbMaxDecayLength;
+Double_t SFT_gbMaxProductIPXY;
+Int_t SFT_gbDebug;
+Int_t SFT_gbQA;
+TString SFT_gbFolder;
+TString SFT_gbSuffix;
+TString SFT_gbStamp;
+Int_t SFT_gbRFPFilterBit;
+Double_t SFT_gbRFPminPt;
+Double_t SFT_gbRFPmaxPt;
+Double_t SFT_gbRFPAminEta;
+Double_t SFT_gbRFPAmaxEta;
+Double_t SFT_gbRFPCminEta;
+Double_t SFT_gbRFPCmaxEta;
+Double_t SFT_gbRFPTPCsignal;
+Double_t SFT_gbRFPmaxIPxy;
+Double_t SFT_gbRFPmaxIPz;
+Int_t SFT_gbRFPTPCncls;
+Bool_t SFT_gbAddPitoMCRP;
+Bool_t SFT_gbAllCC;
+Bool_t SFT_gbSkipSelection;
+Bool_t SFT_gbSkipVn;
+Int_t SFT_gbWhichPsi;
+Bool_t SFT_gbFlowPackage;
+Bool_t SFT_gbShrinkFP;
+Bool_t SFT_gbSPVZE;
+Bool_t SFT_gbSPTPC;
+Bool_t SFT_gbSPVZEhalf;
+Bool_t SFT_gbQCTPC;
+Bool_t SFT_gbMCEP;
+Int_t SFT_gbHarmonic;
+TString SFT_gbVZEload;
+Bool_t SFT_gbVZEsave;
+Bool_t SFT_gbVZEmb;
+Bool_t SFT_gbVZEpdisk;
+Int_t SFT_gbV0CRingMin;
+Int_t SFT_gbV0CRingMax;
+Int_t SFT_gbV0ARingMin;
+Int_t SFT_gbV0ARingMax;
+Int_t SFT_gbDauITS0On;
+Int_t SFT_gbDauITS1On;
+Int_t SFT_gbDauITS2On;
+Int_t SFT_gbDauITS3On;
+Int_t SFT_gbDauITS4On;
+Int_t SFT_gbDauITS5On;
+Bool_t SFT_gbDauSPDany;
+Bool_t SFT_gbDauITSrefit;
+
+Bool_t SFT_gbUntagDaughter;
+Int_t SFT_gbPostMatched;
+Double_t SFT_gbVertexZcut;
+
+void AddTaskFlowStrange(TString configFile, TString alienaddress, Bool_t skipTerminate=kFALSE) {
+ Int_t ret = gSystem->Exec( Form("alien_cp %s/%s .",alienaddress.Data(),configFile.Data()) );
+ printf("FlowStrange copying from grid %d\n",ret);
+ AddTaskFlowStrange(configFile,skipTerminate);
+}
+void AddTaskFlowStrange(TString configFile, Bool_t skipTerminate=kFALSE) {
+ SFT_ReadConfig(configFile);
+ if(SFT_gbAllCC) {
+ int centMin[8] = {00,05,10,20,30,40,50,60};
+ int ncent=7;
+ if(SFT_gbRunPP) {
+ ncent=3;
+ centMin[0]=00;
+ centMin[1]=20;
+ centMin[2]=40;
+ centMin[3]=60;
+ } else if(SFT_gbRunPA) {
+ ncent=3;
+ centMin[0]=00;
+ centMin[1]=20;
+ centMin[2]=40;
+ centMin[3]=60;
+ }
+ TString antSuffix = SFT_gbSuffix;
+ for(int cc=0; cc!=ncent; ++cc) {
+ SFT_gbCentPerMin = centMin[cc];
+ SFT_gbCentPerMax = centMin[cc+1];
+ SFT_gbSuffix = Form("%s%02d%02d",antSuffix.Data(),SFT_gbCentPerMin,SFT_gbCentPerMax);
+ AddTaskFlowStrange(skipTerminate);
+ }
+ } else {
+ AddTaskFlowStrange(skipTerminate);
+ }
+}
+void AddTaskFlowStrange(Bool_t skipTerminate) {
+ SFT_PrintConfig();
+
+ TString fileName = AliAnalysisManager::GetCommonFileName();
+ fileName.ReplaceAll(".root","");
+ SFT_gbStamp = SFT_gbFolder + SFT_gbSuffix;
+
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
+
+ //-----------------STRANGE TASK----------------------------
+ AliAnalysisTaskFlowStrange *taskSel = new AliAnalysisTaskFlowStrange(Form("FS_%s",SFT_gbStamp.Data()) );
+ taskSel->SelectCollisionCandidates(SFT_gbTrigger);
+ taskSel->SetReadESD(SFT_gbReadESD);
+ taskSel->SetPostMatched(SFT_gbPostMatched);
+ taskSel->SetReadMC(SFT_gbReadMC);
+ taskSel->SetAvoidExec(SFT_gbAvoidExec);
+ taskSel->SetSkipCentralitySelection(SFT_gbSkipCentrality);
+ taskSel->SetSkipSelection(SFT_gbSkipSelection);
+ taskSel->SetSkipVn(SFT_gbSkipVn);
+ taskSel->SetExtraEventRejection(SFT_gbExtraEventCut);
+ taskSel->SetCentralityRange(SFT_gbCentMethod,SFT_gbCentPerMin,SFT_gbCentPerMax);
+ taskSel->SetSkipTerminate(skipTerminate);
+ taskSel->SetHarmonic(SFT_gbHarmonic);
+ Int_t npt = 24;
+ Double_t ptbin[25] = { 0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8,
+ 2.0, 2.2, 2.4, 2.8, 3.2, 3.6, 4.0, 4.5, 5.0, 6.0,
+ 8.0, 10., 12., 16., 20.};
+ taskSel->SetPtEdges(npt,ptbin);
+ if(SFT_gbRunPP) taskSel->Setpp();
+ if(SFT_gbRunPA) taskSel->SetpA();
+ taskSel->SetDebug(SFT_gbDebug);
+ taskSel->SetK0L0(SFT_gbSpecie);
+ taskSel->SetOnline( SFT_gbOnline );
+ taskSel->SetMass( SFT_MassBins(SFT_gbSpecie),
+ SFT_MinMass(SFT_gbSpecie),
+ SFT_MaxMass(SFT_gbSpecie) );
+
+ taskSel->SetWhichPsi(SFT_gbWhichPsi);
+ taskSel->SetRFPFilterBit(SFT_gbRFPFilterBit);
+ taskSel->SetRFPMinPt(SFT_gbRFPminPt);
+ taskSel->SetRFPMaxPt(SFT_gbRFPmaxPt);
+ taskSel->SetRFPAMinEta(SFT_gbRFPAminEta);
+ taskSel->SetRFPAMaxEta(SFT_gbRFPAmaxEta);
+ taskSel->SetRFPCMinEta(SFT_gbRFPCminEta);
+ taskSel->SetRFPCMaxEta(SFT_gbRFPCmaxEta);
+ taskSel->SetRFPTPCSignal(SFT_gbRFPTPCsignal);
+ taskSel->SetRFPMaxIPxy(SFT_gbRFPmaxIPxy);
+ taskSel->SetRFPMaxIPz(SFT_gbRFPmaxIPz);
+ taskSel->SetRFPMinTPCCls(SFT_gbRFPTPCncls);
+
+ taskSel->SetAddPiToMCReactionPlane(SFT_gbAddPitoMCRP);
+ taskSel->SetDauUnTagProcedure(SFT_gbUntagDaughter);
+ taskSel->SetVertexZcut(SFT_gbVertexZcut);
+
+ taskSel->SetDauMinNClsTPC(SFT_gbMinNClsTPC);
+ taskSel->SetDauMinNClsITS(SFT_gbMinNClsITS);
+ taskSel->SetDauMinXRows(SFT_gbMinXRows);
+ taskSel->SetDauMaxChi2PerNClsTPC(SFT_gbMaxChi2PerNClsTPC);
+ taskSel->SetDauMinXRowsOverNClsFTPC(SFT_gbMinXRowsOverNClsFTPC);
+ taskSel->SetDauMinEta(SFT_gbMinEta);
+ taskSel->SetDauMaxEta(SFT_gbMaxEta);
+ taskSel->SetDauMinPt(SFT_gbMinPt);
+ taskSel->SetDauMinImpactParameterXY(SFT_gbMinImpactParameterXY);
+ taskSel->SetDauMaxNSigmaPID(SFT_gbMaxNSigmaPID);
+ taskSel->SetDauITSLayer(0,SFT_gbDauITS0On);
+ taskSel->SetDauITSLayer(1,SFT_gbDauITS1On);
+ taskSel->SetDauITSLayer(2,SFT_gbDauITS2On);
+ taskSel->SetDauITSLayer(3,SFT_gbDauITS3On);
+ taskSel->SetDauITSLayer(4,SFT_gbDauITS4On);
+ taskSel->SetDauITSLayer(5,SFT_gbDauITS5On);
+ taskSel->SetDauSPDRequireAny(SFT_gbDauSPDany);
+ taskSel->SetDauITSrefit(SFT_gbDauITSrefit);
+
+ taskSel->SetMaxRapidity(SFT_gbMaxRapidity);
+ taskSel->SetMaxDCAdaughters(SFT_gbMaxDCAdaughters);
+ taskSel->SetMinCosinePointingAngleXY(SFT_gbMinCosinePointingAngleXY);
+ taskSel->SetMinQt(SFT_gbMinQt,SFT_gbQtPie);
+ taskSel->SetStopPIDAtPt(SFT_gbPIDPt);
+ taskSel->SetMinRadXY(SFT_gbMinRadXY);
+ taskSel->SetMaxDecayLength(SFT_gbMaxDecayLength);
+ taskSel->SetMaxProductIPXY(SFT_gbMaxProductIPXY);
+ taskSel->SetMinEta(SFT_gbMinEta);
+ taskSel->SetMaxEta(SFT_gbMaxEta);
+ taskSel->SetMinPt(SFT_gbMinPt);
+ taskSel->SetUseFlowPackage(SFT_gbFlowPackage);
+
+ taskSel->SetQAlevel(SFT_gbQA);
+ if(SFT_gbVZEload.Length()>4) {
+ TFile *ocalib = TFile::Open(SFT_gbVZEload);
+ if(ocalib->IsOpen()) {
+ TList *vzero = ocalib->Get("VZECALIB");
+ taskSel->LoadVZEResponse(vzero,SFT_gbVZEmb,SFT_gbVZEpdisk);
+ } else {
+ printf("ADDTASKFLOWSTRANGE COULD NOT OPEN %s. NO VZE CALIBRATION LOADED!\n",SFT_gbVZEload.Data());
+ }
+ }
+ printf("Loading %d %d %d %d as VZE configuration\n",SFT_gbV0CRingMin, SFT_gbV0CRingMax, SFT_gbV0ARingMin, SFT_gbV0ARingMax);
+ taskSel->SetRFPVZERingRange( SFT_gbV0CRingMin, SFT_gbV0CRingMax, SFT_gbV0ARingMin, SFT_gbV0ARingMax );
+ taskSel->SetStoreVZEResponse(SFT_gbVZEsave);
+
+ AliAnalysisDataContainer *cOutHist = mgr->CreateContainer(Form("FS_OH_%s",SFT_gbStamp.Data()),
+ TList::Class(),
+ AliAnalysisManager::kOutputContainer,
+ Form("%s.root:Selector_%s",fileName.Data(),
+ SFT_gbFolder.Data()));
+ AliAnalysisDataContainer *exc_TPC = mgr->CreateContainer( Form("FS_TPC_%s",SFT_gbStamp.Data()),
+ AliFlowEventSimple::Class(),
+ AliAnalysisManager::kExchangeContainer );
+ AliAnalysisDataContainer *exc_VZE = mgr->CreateContainer( Form("FS_VZE_%s",SFT_gbStamp.Data()),
+ AliFlowEventSimple::Class(),
+ AliAnalysisManager::kExchangeContainer );
+ mgr->AddTask(taskSel);
+ mgr->ConnectInput (taskSel,0,cinput1);
+ mgr->ConnectOutput(taskSel,1,cOutHist);
+ mgr->ConnectOutput(taskSel,2,exc_TPC);
+ mgr->ConnectOutput(taskSel,3,exc_VZE);
+
+ if(!SFT_gbFlowPackage) return;
+ if( (!SFT_gbQCTPC) && (!SFT_gbSPVZE) && (!SFT_gbSPTPC) ) return;
+ //-------------------FLOWPACKAGE TASKS----------------------------
+ AliFlowTrackSimpleCuts *filter[20], *filterhf[20][2]; // MASS BANDS
+ int mbs = SFT_MassBands(SFT_gbSpecie);
+ if(SFT_gbPostMatched) mbs = 1;
+ for(int mb=0; mb!=mbs; ++mb) {
+ filter[mb] = new AliFlowTrackSimpleCuts( Form("Filter_MB%d",mb) );
+ filter[mb]->SetEtaMin( -0.8 ); filter[mb]->SetEtaMax( +0.8 );
+ Double_t minmass = SFT_MassBandLowEdge(SFT_gbSpecie,mb);
+ Double_t maxmass = SFT_MassBandLowEdge(SFT_gbSpecie,mb+1);
+ if(SFT_gbPostMatched) maxmass = SFT_MassBandLowEdge(SFT_gbSpecie,SFT_MassBands(SFT_gbSpecie));
+ filter[mb]->SetMassMin( minmass ); filter[mb]->SetMassMax( maxmass );
+ //half window for POIs
+ filterhf[mb][0] = new AliFlowTrackSimpleCuts( Form("Filterhf0_MB%d",mb) );
+ filterhf[mb][0]->SetEtaMin( +0.0 ); filterhf[mb][0]->SetEtaMax( +0.8 );
+ filterhf[mb][0]->SetMassMin( minmass ); filterhf[mb][0]->SetMassMax( maxmass );
+ filterhf[mb][1] = new AliFlowTrackSimpleCuts( Form("Filterhf1_MB%d",mb) );
+ filterhf[mb][1]->SetEtaMin( -0.8 ); filterhf[mb][1]->SetEtaMax( -0.0 );
+ filterhf[mb][1]->SetMassMin( minmass ); filterhf[mb][1]->SetMassMax( maxmass );
+ if(SFT_gbQCTPC) {
+ SFT_AddQCmethod( Form("QCTPCMB%d",mb), exc_TPC, filter[mb]); // QC TPC
+ }
+ if(SFT_gbSPTPC) {
+ SFT_AddSPmethod( Form("SPTPCMB%d",mb), exc_TPC, filterhf[mb][0], "Qa" ); // SP TPC Qa
+ SFT_AddSPmethod( Form("SPTPCMB%d",mb), exc_TPC, filterhf[mb][1], "Qb" ); // SP TPC Qb
+ SFT_AddSPmethod( Form("SPTPC2MB%d",mb), exc_TPC, filterhf[mb][0], "Qa", 0.2 ); // SP TPC Qa
+ SFT_AddSPmethod( Form("SPTPC2MB%d",mb), exc_TPC, filterhf[mb][1], "Qb", 0.2 ); // SP TPC Qb
+ SFT_AddSPmethod( Form("SPTPC4MB%d",mb), exc_TPC, filterhf[mb][0], "Qa", 0.4 ); // SP TPC Qa
+ SFT_AddSPmethod( Form("SPTPC4MB%d",mb), exc_TPC, filterhf[mb][1], "Qb", 0.4 ); // SP TPC Qb
+ }
+ if(SFT_gbMCEP) {
+ SFT_AddMCEPmethod( Form("MCEPMB%d",mb), exc_TPC, filter[mb]); // MCEP TPC
+ }
+ if(SFT_gbSPVZE) {
+ if(SFT_gbSPVZEhalf) {
+ SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filterhf[mb][0], "Qa", 1.0 ); // SP VZE Qa
+ SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filterhf[mb][1], "Qb", 1.0 ); // SP VZE Qa
+ } else {
+ SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filter[mb], "Qa", 1.0 ); // SP VZE Qa
+ SFT_AddSPmethod( Form("SPVZEMB%d",mb), exc_VZE, filter[mb], "Qb", 1.0 ); // SP VZE Qa
+ }
+ }
+ }
+}
+void SFT_AddMCEPmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL) {
+ TString fileName = AliAnalysisManager::GetCommonFileName();
+ TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic);
+ TString myName = Form("%sv%d_%s",name,SFT_gbHarmonic,SFT_gbSuffix.Data());
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myName.Data()),
+ AliFlowEventSimple::Class(),
+ AliAnalysisManager::kExchangeContainer );
+ AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()),
+ NULL, cutsPOI);
+ mgr->AddTask(tskFilter);
+ mgr->ConnectInput( tskFilter,0,flowEvent);
+ mgr->ConnectOutput(tskFilter,1,flowEvent2);
+ AliAnalysisDataContainer *outQC = mgr->CreateContainer( myName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,
+ Form("%s:FlowStrange_MCEP_%s",fileName.Data(),myFolder.Data()) );
+ AliAnalysisTaskMCEventPlane *tskQC = new AliAnalysisTaskMCEventPlane( Form("TaskMCEP_%s",myName.Data()) );
+ tskQC->SetHarmonic(SFT_gbHarmonic);
+ mgr->AddTask(tskQC);
+ mgr->ConnectInput( tskQC,0,flowEvent2);
+ mgr->ConnectOutput(tskQC,1,outQC);
+}
+void SFT_AddQCmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL) {
+ TString fileName = AliAnalysisManager::GetCommonFileName();
+ TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic);
+ TString myName = Form("%sv%d_%s",name,SFT_gbHarmonic,SFT_gbSuffix.Data());
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myName.Data()),
+ AliFlowEventSimple::Class(),
+ AliAnalysisManager::kExchangeContainer );
+ AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()),
+ NULL, cutsPOI);
+ mgr->AddTask(tskFilter);
+ mgr->ConnectInput( tskFilter,0,flowEvent);
+ mgr->ConnectOutput(tskFilter,1,flowEvent2);
+ AliAnalysisDataContainer *outQC = mgr->CreateContainer( myName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,
+ Form("%s:FlowStrange_QC_%s",fileName.Data(),myFolder.Data()) );
+ AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants( Form("TaskQCumulants_%s",myName.Data()),kFALSE );
+ tskQC->SetApplyCorrectionForNUA(kTRUE);
+ tskQC->SetHarmonic(SFT_gbHarmonic);
+ tskQC->SetBookOnlyBasicCCH(SFT_gbShrinkFP);
+ mgr->AddTask(tskQC);
+ mgr->ConnectInput( tskQC,0,flowEvent2);
+ mgr->ConnectOutput(tskQC,1,outQC);
+}
+void SFT_AddSPmethod(char *name, AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL, char *Qvector, Double_t gap=0.0) {
+ TString fileName = AliAnalysisManager::GetCommonFileName();
+ TString myFolder = Form("%sv%d",SFT_gbFolder.Data(),SFT_gbHarmonic);
+ TString myNameSP = Form("%sv%d%s_%s",name,SFT_gbHarmonic,Qvector,SFT_gbSuffix.Data());
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myNameSP.Data()),
+ AliFlowEventSimple::Class(),
+ AliAnalysisManager::kExchangeContainer );
+ AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myNameSP.Data()),
+ NULL, cutsPOI);
+ tskFilter->SetSubeventEtaRange( -5.0, -gap, +gap, +5.0 );
+ mgr->AddTask(tskFilter);
+ mgr->ConnectInput( tskFilter,0,flowEvent);
+ mgr->ConnectOutput(tskFilter,1,flowEvent2);
+ AliAnalysisDataContainer *outSP = mgr->CreateContainer( myNameSP.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,
+ Form("%s:FlowStrange_SP_%s",fileName.Data(),myFolder.Data()) );
+ AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct( Form("TaskScalarProduct_%s",myNameSP.Data()),kFALSE);
+ tskSP->SetApplyCorrectionForNUA(kTRUE);
+ tskSP->SetHarmonic(SFT_gbHarmonic);
+ tskSP->SetTotalQvector(Qvector);
+ tskSP->SetBookOnlyBasicCCH(SFT_gbShrinkFP);
+ mgr->AddTask(tskSP);
+ mgr->ConnectInput( tskSP,0,flowEvent2);
+ mgr->ConnectOutput(tskSP,1,outSP);
+}
+double SFT_MassBandLowEdge( int nv0, int mb ) {
+ if(nv0>10&&mb==0) return -5;
+ if(nv0>10&&mb==1) return +5;
+ switch(nv0) {
+ case(0):
+ double lowEdge[14]={0.398, 0.420, 0.444, 0.468, 0.486,
+ 0.490, 0.494, 0.498, 0.502, 0.506,
+ 0.524, 0.548, 0.572, 0.598};
+ break;
+ default:
+ double lowEdge[13]={1.084, 1.094, 1.104, 1.110, 1.114,
+ 1.116, 1.118, 1.122, 1.128, 1.138,
+ 1.148, 1.158, 1.168};
+ break;
+ }
+ return lowEdge[mb];
+}
+int SFT_MassBands( int nv0 ) {
+ int bands=1;
+ switch(nv0) {
+ case(0):
+ bands = 13;
+ break;
+ default:
+ bands = 12;
+ }
+ if(nv0>10) bands=1;
+ return bands;
+}
+int SFT_MassBins( int nv0 ) {
+ int bins=100;
+ switch(nv0) {
+ case(0)://kZERO
+ bins=100;
+ break;
+ default://LAMBDA
+ bins=84;
+ break;
+ }
+ if(nv0>10) bins=100;//CHARGED
+ return bins;
+}
+double SFT_MinMass( int nv0 ) {
+ return SFT_MassBandLowEdge( nv0, 0 );
+}
+double SFT_MaxMass( int nv0 ) {
+ return SFT_MassBandLowEdge( nv0, SFT_MassBands(nv0) );
+}
+void SFT_PrintConfig() {
+ printf("***********************************\n");
+ printf("* STRANGE FLOW TASK CONFIGURATION *\n");
+ printf("* SUFFIX %s *\n", SFT_gbSuffix.Data() );
+ printf("* TRIGGER %d *\n", SFT_gbTrigger );
+ printf("* RUNPP %d *\n", SFT_gbRunPP );
+ printf("* RUNPA %d *\n", SFT_gbRunPA );
+ printf("* AVOIDEXEC %d *\n", SFT_gbAvoidExec );
+ printf("* SKIPCENTRALITY %d *\n", SFT_gbSkipCentrality );
+ printf("* ESD %d *\n", SFT_gbReadESD );
+ printf("* MC %d *\n", SFT_gbReadMC );
+ printf("* HARMONIC %d *\n", SFT_gbHarmonic );
+ printf("* ADDPITOMCEP %d *\n", SFT_gbAddPitoMCRP );
+ printf("* POSTMATCHED %d *\n", SFT_gbPostMatched );
+ printf("* EXTRAEVENTCUT %d *\n", SFT_gbExtraEventCut );
+ printf("* CENTMETHOD %s *\n", SFT_gbCentMethod.Data() );
+ printf("* CENTPERMIN %d *\n", SFT_gbCentPerMin );
+ printf("* CENTPERMAX %d *\n", SFT_gbCentPerMax );
+ printf("* VERTEXZ %f *\n", SFT_gbVertexZcut );
+ printf("* SPECIE %d *\n", SFT_gbSpecie );
+ printf("* HOMEMADE %d *\n", SFT_gbHomemade );
+ printf("* ONLINE %d *\n", SFT_gbOnline );
+ printf("* MINNCLSTTPC %d *\n", SFT_gbMinNClsTPC );
+ printf("* MINNCLSITS %d *\n", SFT_gbMinNClsITS );
+ printf("* MINXROWS %d *\n", SFT_gbMinXRows );
+ printf("* MAXCHI2NCLSTPC %f *\n", SFT_gbMaxChi2PerNClsTPC );
+ printf("* MINXROWSNFCLSTPC %f *\n", SFT_gbMinXRowsOverNClsFTPC );
+ printf("* MINETA %f *\n", SFT_gbMinEta );
+ printf("* MAXETA %f *\n", SFT_gbMaxEta );
+ printf("* MINPT %f *\n", SFT_gbMinPt );
+ printf("* UNTAG %f *\n", SFT_gbUntagDaughter );
+ printf("* MIND0XY %f *\n", SFT_gbMinImpactParameterXY );
+ printf("* MAXSIGMAPID %f *\n", SFT_gbMaxNSigmaPID );
+ printf("* MAXY %f *\n", SFT_gbMaxRapidity );
+ printf("* MAXDCA %f *\n", SFT_gbMaxDCAdaughters );
+ printf("* MINCTP %f *\n", SFT_gbMinCosinePointingAngleXY );
+ printf("* MINQT %f *\n", SFT_gbMinQt );
+ printf("* QTPIE %f *\n", SFT_gbQtPie );
+ printf("* STOPPID %f *\n", SFT_gbPIDPt );
+ printf("* MINRADXY %f *\n", SFT_gbMinRadXY );
+ printf("* MAXDL %f *\n", SFT_gbMaxDecayLength );
+ printf("* D0D0XY %f *\n", SFT_gbMaxProductIPXY );
+ printf("* DEBUG %d *\n", SFT_gbDebug );
+ printf("* QA %d *\n", SFT_gbQA );
+ printf("* SKIPSELECTION %d *\n", SFT_gbSkipSelection );
+ printf("* SKIPVN %d *\n", SFT_gbSkipVn );
+ printf("* USEFP %d *\n", SFT_gbFlowPackage );
+ printf("* SPVZE %d *\n", SFT_gbSPVZE );
+ printf("* SPVZEHALF %d *\n", SFT_gbSPVZEhalf );
+ printf("* SPTPC %d *\n", SFT_gbSPTPC );
+ printf("* QCTPC %d *\n", SFT_gbQCTPC );
+ printf("* MCEP %d *\n", SFT_gbMCEP );
+ printf("* SHRINKFP %d *\n", SFT_gbShrinkFP );
+ printf("* RFFILTERBIT %d *\n", SFT_gbRFPFilterBit );
+ printf("* RFMINPT %f *\n", SFT_gbRFPminPt );
+ printf("* RFMAXPT %f *\n", SFT_gbRFPmaxPt );
+ printf("* RFCMINETA %f *\n", SFT_gbRFPCminEta );
+ printf("* RFCMAXETA %f *\n", SFT_gbRFPCmaxEta );
+ printf("* RFAMINETA %f *\n", SFT_gbRFPAminEta );
+ printf("* RFAMAXETA %f *\n", SFT_gbRFPAmaxEta );
+ printf("* RFTPCSIGNAL %f *\n", SFT_gbRFPTPCsignal );
+ printf("* RFMAXIPXY %f *\n", SFT_gbRFPmaxIPxy );
+ printf("* RFMAXIPZ %f *\n", SFT_gbRFPmaxIPz );
+ printf("* RFTPCNCLS %d *\n", SFT_gbRFPTPCncls );
+ printf("* RFVZEC_RingMin %d *\n", SFT_gbV0CRingMin );
+ printf("* RFVZEC_RingMax %d *\n", SFT_gbV0CRingMax );
+ printf("* RFVZEA_RingMin %d *\n", SFT_gbV0ARingMin );
+ printf("* RFVZEA_RingMax %d *\n", SFT_gbV0ARingMax );
+ printf("* WHICHPSI %d *\n", SFT_gbWhichPsi );
+ printf("* VZELOAD %s *\n", SFT_gbVZEload.Data() );
+ printf("* VZELINEAR %d *\n", SFT_gbVZEmb );
+ printf("* VZEPERDISK %d *\n", SFT_gbVZEpdisk );
+ printf("* VZESAVE %d *\n", SFT_gbVZEsave );
+ printf("* DAUITS0 %d *\n", SFT_gbDauITS0On );
+ printf("* DAUITS1 %d *\n", SFT_gbDauITS1On );
+ printf("* DAUITS2 %d *\n", SFT_gbDauITS2On );
+ printf("* DAUITS3 %d *\n", SFT_gbDauITS3On );
+ printf("* DAUITS4 %d *\n", SFT_gbDauITS4On );
+ printf("* DAUITS5 %d *\n", SFT_gbDauITS5On );
+ printf("* DAUSPDANY %d *\n", SFT_gbDauSPDany );
+ printf("* DAUITSrefit %d *\n", SFT_gbDauITSrefit );
+ printf("***********************************\n");
+}
+void SFT_ReadConfig(TString ipf) {
+ SFT_ResetVars();
+ printf("Reading %s\n",ipf.Data());
+ ifstream input(ipf.Data());
+ TString varname;
+ Double_t vardouble;
+ Int_t varint;
+ UInt_t varuint;
+ Bool_t varbool;
+ for(;input.good();) {
+ input >> varname;
+ if(!input.good()) {
+ break;
+ } else if(!varname.CompareTo("SUFFIX")) {
+ input >> SFT_gbSuffix;
+ } else if(!varname.CompareTo("TRIGGER")) {
+ input >> SFT_gbTrigger;
+ } else if(!varname.CompareTo("RUNPP")) {
+ input >> SFT_gbRunPP;
+ } else if(!varname.CompareTo("RUNPA")) {
+ input >> SFT_gbRunPA;
+ } else if(!varname.CompareTo("AVOIDEXEC")) {
+ input >> SFT_gbAvoidExec;
+ } else if(!varname.CompareTo("SKIPCENTRALITY")) {
+ input >> SFT_gbSkipCentrality;
+ } else if(!varname.CompareTo("ESD")) {
+ input >> SFT_gbReadESD;
+ } else if(!varname.CompareTo("MC")) {
+ input >> SFT_gbReadMC;
+ } else if(!varname.CompareTo("EXTRAEVENTCUT")) {
+ input >> SFT_gbExtraEventCut;
+ } else if(!varname.CompareTo("CENTMETHOD")) {
+ input >> SFT_gbCentMethod;
+ } else if(!varname.CompareTo("CENTPERMIN")) {
+ input >> SFT_gbCentPerMin;
+ } else if(!varname.CompareTo("CENTPERMAX")) {
+ input >> SFT_gbCentPerMax;
+ } else if(!varname.CompareTo("SPECIE")) {
+ input >> SFT_gbSpecie;
+ } else if(!varname.CompareTo("HOMEMADE")) {
+ input >> SFT_gbHomemade;
+ } else if(!varname.CompareTo("ONLINE")) {
+ input >> SFT_gbOnline;
+ } else if(!varname.CompareTo("MINNCLSTTPC")) {
+ input >> SFT_gbMinNClsTPC;
+ } else if(!varname.CompareTo("MINNCLSITS")) {
+ input >> SFT_gbMinNClsITS;
+ } else if(!varname.CompareTo("MINXROWS")) {
+ input >> SFT_gbMinXRows;
+ } else if(!varname.CompareTo("MAXCHI2NCLSTPC")) {
+ input >> SFT_gbMaxChi2PerNClsTPC;
+ } else if(!varname.CompareTo("MINXROWSNFCLSTPC")) {
+ input >> SFT_gbMinXRowsOverNClsFTPC;
+ } else if(!varname.CompareTo("MINETA")) {
+ input >> SFT_gbMinEta;
+ } else if(!varname.CompareTo("MAXETA")) {
+ input >> SFT_gbMaxEta;
+ } else if(!varname.CompareTo("MINPT")) {
+ input >> SFT_gbMinPt;
+ } else if(!varname.CompareTo("MIND0XY")) {
+ input >> SFT_gbMinImpactParameterXY;
+ } else if(!varname.CompareTo("MAXSIGMAPID")) {
+ input >> SFT_gbMaxNSigmaPID;
+ } else if(!varname.CompareTo("MAXY")) {
+ input >> SFT_gbMaxRapidity;
+ } else if(!varname.CompareTo("MAXDCA")) {
+ input >> SFT_gbMaxDCAdaughters;
+ } else if(!varname.CompareTo("MINCTP")) {
+ input >> SFT_gbMinCosinePointingAngleXY;
+ } else if(!varname.CompareTo("MINQT")) {
+ input >> SFT_gbMinQt;
+ } else if(!varname.CompareTo("QTPIE")) {
+ input >> SFT_gbQtPie;
+ } else if(!varname.CompareTo("STOPPID")) {
+ input >> SFT_gbPIDPt;
+ } else if(!varname.CompareTo("MINRADXY")) {
+ input >> SFT_gbMinRadXY;
+ } else if(!varname.CompareTo("MAXDL")) {
+ input >> SFT_gbMaxDecayLength;
+ } else if(!varname.CompareTo("D0D0XY")) {
+ input >> SFT_gbMaxProductIPXY;
+ } else if(!varname.CompareTo("DEBUG")) {
+ input >> SFT_gbDebug;
+ } else if(!varname.CompareTo("QA")) {
+ input >> SFT_gbQA;
+ } else if(!varname.CompareTo("SKIPSELECTION")) {
+ input >> SFT_gbSkipSelection;
+ } else if(!varname.CompareTo("SKIPVN")) {
+ input >> SFT_gbSkipVn;
+ } else if(!varname.CompareTo("USEFP")) {
+ input >> SFT_gbFlowPackage;
+ } else if(!varname.CompareTo("SPVZE")) {
+ input >> SFT_gbSPVZE;
+ } else if(!varname.CompareTo("SPTPC")) {
+ input >> SFT_gbSPTPC;
+ } else if(!varname.CompareTo("SPVZEHALF")) {
+ input >> SFT_gbSPVZEhalf;
+ } else if(!varname.CompareTo("QCTPC")) {
+ input >> SFT_gbQCTPC;
+ } else if(!varname.CompareTo("MCEP")) {
+ input >> SFT_gbMCEP;
+ } else if(!varname.CompareTo("ADDPITOMCEP")) {
+ input >> SFT_gbAddPitoMCRP;
+ } else if(!varname.CompareTo("SHRINKFP")) {
+ input >> SFT_gbShrinkFP;
+ } else if(!varname.CompareTo("RFFILTERBIT")) {
+ input >> SFT_gbRFPFilterBit;
+ } else if(!varname.CompareTo("RFMINPT")) {
+ input >> SFT_gbRFPminPt;
+ } else if(!varname.CompareTo("RFMAXPT")) {
+ input >> SFT_gbRFPmaxPt;
+ } else if(!varname.CompareTo("RFCMINETA")) {
+ input >> SFT_gbRFPCminEta;
+ } else if(!varname.CompareTo("RFCMAXETA")) {
+ input >> SFT_gbRFPCmaxEta;
+ } else if(!varname.CompareTo("RFAMINETA")) {
+ input >> SFT_gbRFPAminEta;
+ } else if(!varname.CompareTo("RFAMAXETA")) {
+ input >> SFT_gbRFPAmaxEta;
+ } else if(!varname.CompareTo("RFTPCSIGNAL")) {
+ input >> SFT_gbRFPTPCsignal;
+ } else if(!varname.CompareTo("RFMAXIPXY")) {
+ input >> SFT_gbRFPmaxIPxy;
+ } else if(!varname.CompareTo("RFMAXIPZ")) {
+ input >> SFT_gbRFPmaxIPz;
+ } else if(!varname.CompareTo("RFTPCNCLS")) {
+ input >> SFT_gbRFPTPCncls;
+ } else if(!varname.CompareTo("VZELOAD")) {
+ input >> SFT_gbVZEload;
+ } else if(!varname.CompareTo("VZELINEAR")) {
+ input >> SFT_gbVZEmb;
+ } else if(!varname.CompareTo("VZEPERDISK")) {
+ input >> SFT_gbVZEpdisk;
+ } else if(!varname.CompareTo("VZESAVE")) {
+ input >> SFT_gbVZEsave;
+ } else if(!varname.CompareTo("ALLCC")) {
+ input >> SFT_gbAllCC;
+ } else if(!varname.CompareTo("UNTAG")) {
+ input >> SFT_gbUntagDaughter;
+ } else if(!varname.CompareTo("POSTMATCHED")) {
+ input >> SFT_gbPostMatched;
+ } else if(!varname.CompareTo("VERTEXZ")) {
+ input >> SFT_gbVertexZcut;
+ } else if(!varname.CompareTo("WHICHPSI")) {
+ input >> SFT_gbWhichPsi;
+ } else if(!varname.CompareTo("DAUITS0")) {
+ input >> SFT_gbDauITS0On;
+ } else if(!varname.CompareTo("DAUITS1")) {
+ input >> SFT_gbDauITS1On;
+ } else if(!varname.CompareTo("DAUITS2")) {
+ input >> SFT_gbDauITS2On;
+ } else if(!varname.CompareTo("DAUITS3")) {
+ input >> SFT_gbDauITS3On;
+ } else if(!varname.CompareTo("DAUITS4")) {
+ input >> SFT_gbDauITS4On;
+ } else if(!varname.CompareTo("DAUITS5")) {
+ input >> SFT_gbDauITS5On;
+ } else if(!varname.CompareTo("DAUSPDANY")) {
+ input >> SFT_gbDauSPDany;
+ } else if(!varname.CompareTo("DAUITSREFIT")) {
+ input >> SFT_gbDauITSrefit;
+ } else if(!varname.CompareTo("RFVZEC_RingMin")) {
+ input >> SFT_gbV0CRingMin;
+ } else if(!varname.CompareTo("RFVZEC_RingMax")) {
+ input >> SFT_gbV0CRingMax;
+ } else if(!varname.CompareTo("RFVZEA_RingMin")) {
+ input >> SFT_gbV0ARingMin;
+ } else if(!varname.CompareTo("RFVZEA_RingMax")) {
+ input >> SFT_gbV0ARingMax;
+ } else if(!varname.CompareTo("HARMONIC")) {
+ input >> SFT_gbHarmonic;
+ } else {
+ printf("I dont understand %s\n",varname.Data());
+ }
+ }
+}
+void SFT_ResetVars() {
+ SFT_gbTrigger=1;
+ SFT_gbReadESD=0;
+ SFT_gbReadMC=0;
+ SFT_gbMatchMC=0;
+ SFT_gbAvoidExec=0;
+ SFT_gbExtraEventCut=0;
+ SFT_gbCentMethod="V0MTRK";
+ SFT_gbCentPerMin=0;
+ SFT_gbCentPerMax=100;
+ SFT_gbRunPP=0;
+ SFT_gbRunPA=0;
+ SFT_gbSpecie=0;
+ SFT_gbHomemade=0;
+ SFT_gbOnline=0;
+ SFT_gbMinNClsTPC=70;
+ SFT_gbMinNClsITS=-1;
+ SFT_gbMinXRows=70;
+ SFT_gbMaxChi2PerNClsTPC=4.0;
+ SFT_gbMinXRowsOverNClsFTPC=0.8;
+ SFT_gbMinEta=-0.8;
+ SFT_gbMaxEta=+0.8;
+ SFT_gbMinPt=0.1;
+ SFT_gbMinImpactParameterXY=0.1;
+ SFT_gbMaxNSigmaPID=3.0;
+ SFT_gbMaxRapidity=0.5;
+ SFT_gbMaxDCAdaughters=1.0;
+ SFT_gbMinCosinePointingAngleXY=0.998;
+ SFT_gbMinQt=0.2;
+ SFT_gbQtPie=kTRUE;
+ SFT_gbPIDPt=3.0;
+ SFT_gbMinRadXY=5.0;
+ SFT_gbMaxDecayLength=3.0;
+ SFT_gbMaxProductIPXY=0.0;
+ SFT_gbDebug=0;
+ SFT_gbQA=0;
+ SFT_gbFolder="FlowStrange";
+ SFT_gbSuffix="NOTFOUND";
+ SFT_gbRFPFilterBit=1;
+ SFT_gbRFPminPt=0.2;
+ SFT_gbRFPmaxPt=5.0;
+ SFT_gbRFPCminEta=-0.8;
+ SFT_gbRFPCmaxEta=0.0;
+ SFT_gbRFPAminEta=0.0;
+ SFT_gbRFPAmaxEta=+0.8;
+ SFT_gbRFPTPCsignal=10;
+ SFT_gbRFPmaxIPxy=2.4;
+ SFT_gbRFPmaxIPz=3.2;
+ SFT_gbRFPTPCncls=70;
+ SFT_gbV0CRingMin=0;
+ SFT_gbV0CRingMax=3;
+ SFT_gbV0ARingMin=0;
+ SFT_gbV0ARingMax=3;
+ SFT_gbAllCC=0;
+ SFT_gbSkipSelection=0;
+ SFT_gbSkipVn=0;
+ SFT_gbWhichPsi=1;
+ SFT_gbFlowPackage=0;
+ SFT_gbSPVZE=0;
+ SFT_gbSPVZEhalf=kFALSE;
+ SFT_gbSPTPC=0;
+ SFT_gbQCTPC=0;
+ SFT_gbMCEP=0;
+ SFT_gbHarmonic=2;
+ SFT_gbVZEload="no";
+ SFT_gbVZEsave=0;
+ SFT_gbVZEmb=0;
+ SFT_gbVZEpdisk=0;
+ SFT_gbUntagDaughter=kTRUE;
+ SFT_gbPostMatched=kFALSE;
+ SFT_gbShrinkFP=kTRUE;
+ SFT_gbVertexZcut=10.0;
+ SFT_gbDauITS0On=-1;
+ SFT_gbDauITS1On=-1;
+ SFT_gbDauITS2On=-1;
+ SFT_gbDauITS3On=-1;
+ SFT_gbDauITS4On=-1;
+ SFT_gbDauITS5On=-1;
+ SFT_gbSkipCentrality=kFALSE;
+ SFT_gbAddPitoMCRP=kFALSE;
+ SFT_gbDauSPDany=kFALSE;
+ SFT_gbDauITSrefit=kFALSE;
+}