1 void AddTaskFlowCascade(int trigger, int centrMin, int centrMax, int cut=1, int harmonic=2) {
2 AddTaskFlowCascade(trigger, centrMin, centrMax, "Xi",
3 Form("Xi%d%dcut%d", centrMin, centrMax, cut), 0, cut, "V0M", "VZESP", harmonic);
5 AddTaskFlowCascade(trigger, centrMin, centrMax, "Omega",
6 Form("Omega%d%dcut%d", centrMin,centrMax, cut), 1, cut, "V0M", "VZESP", harmonic);
9 void AddTaskFlowCascade(int trigger, float centrMin, float centrMax,
10 TString folderName="myFolder", TString suffixName="mySuffix",
11 int specie=0, int cuts=1, char* MULT="V0M",
12 TString method="VZESP QC TPCSP", int harmonic=2) {
13 TString fileName = AliAnalysisManager::GetCommonFileName();
14 // fileName.ReplaceAll(".root","");
16 //-E-V-E-N-T- -c-u-t-s--------------------------------------------------------
17 AliFlowEventCuts* cutsEvent = new AliFlowEventCuts(Form("event_cuts_%s",suffixName.Data()));
18 cutsEvent->SetCentralityPercentileRange(centrMin,centrMax);
20 cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kV0);
22 cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kTPConly);
23 cutsEvent->SetRefMultMethod(AliFlowEventCuts::kSPDtracklets);
24 cutsEvent->SetNContributorsRange(2);
25 cutsEvent->SetPrimaryVertexZrange(-10.,+10.);
27 //-R-P---c-u-t-s--------------------------------------------------------------
28 AliFlowTrackCuts *cutsRPTPC
29 = AliFlowTrackCuts::GetStandardTPCStandaloneTrackCuts();
30 cutsRPTPC->SetParamType( AliFlowTrackCuts::kGlobal );
31 cutsRPTPC->SetAODfilterBit(1); // for AOD compatibility
33 AliFlowTrackCuts *cutsRPVZE = AliFlowTrackCuts::GetStandardVZEROOnlyTrackCuts();
34 // AliFlowTrackCuts* trkCuts = new AliFlowTrackCuts();
35 //AliFlowTrackCuts *cutsRPVZE = trkCuts->GetStandardVZEROOnlyTrackCuts();
36 cutsRPVZE->SetApplyRecentering(kTRUE);
38 //-D-A-U-G-H-T-E-R-S---c-u-t-s------------------------------------------------
39 // AliESDtrackCuts* cutsDaughter
40 // = new AliESDtrackCuts(Form("daughter_cuts_%s",suffixName.Data()) );
41 AliFlowTrackCuts * cutsDaughter
42 = new AliFlowTrackCuts(Form("daughter_cuts_%s",suffixName.Data()));
43 cutsDaughter->SetPtRange(0.15,10.0);
44 cutsDaughter->SetEtaRange(-0.8, 0.8 );
45 cutsDaughter->SetMinNClustersTPC(70);
46 cutsDaughter->SetMaxChi2PerClusterTPC(4.0);
47 cutsDaughter->SetRequireTPCRefit(kTRUE);
48 cutsDaughter->SetAcceptKinkDaughters(kFALSE);
50 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
51 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
53 //-----------------Cascade TASK----------------------------
54 AliAnalysisTaskFlowCascade *taskSel
55 = new AliAnalysisTaskFlowCascade(Form("Cascade_%s",suffixName.Data()),
56 cutsEvent, cutsRPTPC, cutsRPVZE,
58 taskSel->SelectCollisionCandidates(trigger);
59 //taskSel->SetDebug();
60 taskSel->SetCuts2010(cuts);
61 taskSel->SetSpecie(specie);
62 //printf( "CMM %d %f %f\n", MassBins(specie), MinMass(specie), MSFT_MaxMass(specie) );
63 taskSel->SetCommonConstants( MSFT_MassBins(specie), MSFT_MinMass(specie), MSFT_MaxMass(specie) );
64 AliAnalysisDataContainer *cOutHist
65 = mgr->CreateContainer(Form("OutHistos_%s",suffixName.Data()),
67 AliAnalysisManager::kOutputContainer,
68 Form("%s:Selector_%s",fileName.Data(),
70 AliAnalysisDataContainer *exc_TPC
71 = mgr->CreateContainer( Form("TPCEventWithCandidates_%s",suffixName.Data()),
72 AliFlowEventSimple::Class(),
73 AliAnalysisManager::kExchangeContainer );
74 AliAnalysisDataContainer *exc_VZE
75 = mgr->CreateContainer( Form("VZEEventWithCandidates_%s",suffixName.Data()),
76 AliFlowEventSimple::Class(),
77 AliAnalysisManager::kExchangeContainer );
78 mgr->AddTask(taskSel);
79 mgr->ConnectInput (taskSel, 0, cinput1);
80 mgr->ConnectOutput(taskSel, 1, exc_TPC);
81 mgr->ConnectOutput(taskSel, 2, exc_VZE);
82 mgr->ConnectOutput(taskSel, 3, cOutHist);
84 //-------------------FLOW TASKS----------------------------
85 AliFlowTrackSimpleCuts *filter[15], *filterhf[15][2]; // MASS BANDS
86 for(int mb=0; mb!=MSFT_MassBands(0); ++mb) {
87 filter[mb] = new AliFlowTrackSimpleCuts( Form("Filter_MB%d",mb) );
88 filter[mb]->SetEtaMin( -0.8 );
89 filter[mb]->SetEtaMax( +0.8 );
90 filter[mb]->SetMassMin( MSFT_MassBandLowEdge(specie, mb) );
91 filter[mb]->SetMassMax( MSFT_MassBandLowEdge(specie, mb+1) );
93 filterhf[mb][0] = new AliFlowTrackSimpleCuts( Form("Filterhf0_MB%d",mb) );
94 filterhf[mb][0]->SetEtaMin( 0.0 );
95 filterhf[mb][0]->SetEtaMax( +0.8 );
96 filterhf[mb][0]->SetMassMin( MSFT_MassBandLowEdge(specie, mb) );
97 filterhf[mb][0]->SetMassMax( MSFT_MassBandLowEdge(specie, mb+1) );
99 filterhf[mb][1] = new AliFlowTrackSimpleCuts( Form("Filterhf1_MB%d",mb) );
100 filterhf[mb][1]->SetEtaMin( -0.8 );
101 filterhf[mb][1]->SetEtaMax( 0.0 );
102 filterhf[mb][1]->SetMassMin( MSFT_MassBandLowEdge(specie, mb) );
103 filterhf[mb][1]->SetMassMax( MSFT_MassBandLowEdge(specie, mb+1) );
105 if(method.Contains("QC"))
106 MSFT_AddQCmethod( Form("QCTPCMB%d", mb), folderName.Data(), suffixName.Data(), harmonic,
107 exc_TPC, filter[mb]); // QC TPC
108 if(method.Contains("TPCSP")){
109 MSFT_AddSPmethod( Form("SPTPCMB%d", mb), folderName.Data(), suffixName.Data(), harmonic,
110 exc_TPC, filterhf[mb][0], "Qa" ); // SP TPC Qa
111 MSFT_AddSPmethod( Form("SPTPCMB%d", mb), folderName.Data(), suffixName.Data(), harmonic,
112 exc_TPC, filterhf[mb][1], "Qb" ); // SP TPC Qb
114 if(method.Contains("VZESP")){
115 MSFT_AddSPmethod( Form("SPVZEMB%d", mb), folderName.Data(), suffixName.Data(), harmonic,
116 exc_VZE, filter[mb], "Qa" ); // SP VZE Qa
117 MSFT_AddSPmethod( Form("SPVZEMB%d",mb), folderName.Data(), suffixName.Data(), harmonic,
118 exc_VZE, filter[mb], "Qb" ); // SP VZE Qa
119 MSFT_AddSPmethod( Form("SPVZEMB%d",mb), folderName.Data(), suffixName.Data(), harmonic,
120 exc_VZE, filter[mb], "QaQb" ); // SP VZE QaQb
125 void MSFT_AddQCmethod(char *name, TString myFolder, char *thecuts, int harmonic,
126 AliAnalysisDataContainer *flowEvent,
127 AliFlowTrackSimpleCuts *cutsPOI=NULL) {
128 TString fileName = AliAnalysisManager::GetCommonFileName();
129 myFolder.Append( Form("v%d",harmonic) );
130 TString myName = Form("%sv%d_%s", name, harmonic, thecuts);
131 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
132 AliAnalysisDataContainer *flowEvent2
133 = mgr->CreateContainer( Form("Filter_%s", myName.Data()),
134 AliFlowEventSimple::Class(),
135 AliAnalysisManager::kExchangeContainer );
136 AliAnalysisTaskFilterFE *tskFilter
137 = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()),
139 mgr->AddTask(tskFilter);
140 mgr->ConnectInput( tskFilter, 0, flowEvent);
141 mgr->ConnectOutput(tskFilter, 1, flowEvent2);
143 AliAnalysisDataContainer *outQC
144 = mgr->CreateContainer( myName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer,
145 Form("%s:FlowCascade_QC_%s", fileName.Data(), myFolder.Data()) );
146 AliAnalysisTaskQCumulants *tskQC
147 = new AliAnalysisTaskQCumulants( Form("TaskQCumulants_%s",myName.Data()),kFALSE );
148 tskQC->SetApplyCorrectionForNUA(kTRUE);
149 tskQC->SetHarmonic(harmonic);
150 tskQC->SetBookOnlyBasicCCH(kTRUE);
152 mgr->ConnectInput( tskQC, 0, flowEvent2);
153 mgr->ConnectOutput(tskQC, 1, outQC);
157 void MSFT_AddSPmethod(char *name, TString myFolder, char *thecuts, int harmonic,
158 AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL,
160 TString fileName = AliAnalysisManager::GetCommonFileName();
161 myFolder.Append( Form("v%d",harmonic) );
162 TString myNameSP = Form("%sv%d%s_%s", name, harmonic, Qvector, thecuts);
163 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
164 AliAnalysisDataContainer *flowEvent2
165 = mgr->CreateContainer( Form("Filter_%s", myNameSP.Data()),
166 AliFlowEventSimple::Class(),
167 AliAnalysisManager::kExchangeContainer );
168 AliAnalysisTaskFilterFE *tskFilter
169 = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myNameSP.Data()),
171 tskFilter->SetSubeventEtaRange( -5.0, -1.0, 1.0, +5.0 );
172 mgr->AddTask(tskFilter);
173 mgr->ConnectInput( tskFilter, 0, flowEvent);
174 mgr->ConnectOutput(tskFilter, 1, flowEvent2);
175 AliAnalysisDataContainer *outSP
176 = mgr->CreateContainer( myNameSP.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,
177 Form("%s:FlowCascade_SP_%s",fileName.Data(),myFolder.Data()) );
178 AliAnalysisTaskScalarProduct *tskSP
179 = new AliAnalysisTaskScalarProduct( Form("TaskScalarProduct_%s",myNameSP.Data()),kFALSE);
180 tskSP->SetApplyCorrectionForNUA(kTRUE);
181 tskSP->SetHarmonic(harmonic);
182 tskSP->SetTotalQvector(Qvector);
183 tskSP->SetBookOnlyBasicCCH(kTRUE);
185 mgr->ConnectInput( tskSP,0,flowEvent2);
186 mgr->ConnectOutput(tskSP,1,outSP);
189 double MSFT_MassBandLowEdge( int nv0, int mb ) {
191 double lowEdge[15+1]={ 1.282, 1.292, 1.302, 1.312, 1.317, 1.319, 1.321, 1.322,
192 1.323, 1.325, 1.327, 1.332, 1.342, 1.352, 1.362, 1.372};
194 double lowEdge[15+1]={ 1.632, 1.642, 1.652, 1.662, 1.667, 1.669, 1.671, 1.672,
195 1.673, 1.675, 1.677, 1.682, 1.692, 1.702, 1.712, 1.722 };
200 int MSFT_MassBands( int nv0 ) {
208 int MSFT_MassBins( int nv0 ) {
216 double MSFT_MinMass( int nv0 ) {
217 return MSFT_MassBandLowEdge( nv0, 0 );
220 double MSFT_MaxMass( int nv0 ) {
221 return MSFT_MassBandLowEdge( nv0, MSFT_MassBands(nv0) );