]>
Commit | Line | Data |
---|---|---|
6d636126 | 1 | void AddTaskFlowStrange(int trigger, int centrMin, int centrMax, int harmonic=2) {\r |
7c5aa0f1 | 2 | AddTaskFlowStrange(trigger,centrMin,centrMax,"K0",Form("K%d%dc0",centrMin,centrMax), 0,0,"V0M",harmonic);\r |
3 | AddTaskFlowStrange(trigger,centrMin,centrMax,"K0",Form("K%d%dc1",centrMin,centrMax), 0,1,"V0M",harmonic);\r | |
4 | AddTaskFlowStrange(trigger,centrMin,centrMax,"K0",Form("K%d%dc2",centrMin,centrMax), 0,2,"V0M",harmonic);\r | |
5 | AddTaskFlowStrange(trigger,centrMin,centrMax,"K0",Form("K%d%dc3",centrMin,centrMax), 0,3,"V0M",harmonic);\r | |
6 | AddTaskFlowStrange(trigger,centrMin,centrMax,"K0",Form("K%d%dc2TRK",centrMin,centrMax),0,2,"TRK",harmonic);\r | |
7 | \r | |
8 | AddTaskFlowStrange(trigger,centrMin,centrMax,"L0",Form("L%d%dc0",centrMin,centrMax), 1,0,"V0M",harmonic);\r | |
9 | AddTaskFlowStrange(trigger,centrMin,centrMax,"L0",Form("L%d%dc1",centrMin,centrMax), 1,1,"V0M",harmonic);\r | |
10 | AddTaskFlowStrange(trigger,centrMin,centrMax,"L0",Form("L%d%dc2",centrMin,centrMax), 1,2,"V0M",harmonic);\r | |
11 | AddTaskFlowStrange(trigger,centrMin,centrMax,"L0",Form("L%d%dc3",centrMin,centrMax), 1,3,"V0M",harmonic);\r | |
12 | AddTaskFlowStrange(trigger,centrMin,centrMax,"L0",Form("L%d%dc2TRK",centrMin,centrMax),1,2,"TRK",harmonic);\r | |
6d636126 | 13 | }\r |
7c5aa0f1 | 14 | void AddTaskFlowStrange(int trigger, float centrMin, float centrMax, TString folderName="myFolder", TString suffixName="mySuffix", \r |
15 | int specie=0, int cuts=1, char* MULT="V0M", int harmonic=2) {\r | |
893d83c8 | 16 | TString fileName = AliAnalysisManager::GetCommonFileName();\r |
17 | fileName.ReplaceAll(".root","");\r | |
18 | \r | |
19 | //-E-V-E-N-T- -c-u-t-s--------------------------------------------------------\r | |
20 | AliFlowEventCuts* cutsEvent = new AliFlowEventCuts(Form("event_cuts_%s",suffixName.Data()));\r | |
21 | cutsEvent->SetCentralityPercentileRange(centrMin,centrMax);\r | |
22 | if(MULT=="V0M")\r | |
23 | cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kV0);\r | |
24 | else\r | |
25 | cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kTPConly);\r | |
26 | cutsEvent->SetRefMultMethod(AliFlowEventCuts::kSPDtracklets);\r | |
27 | cutsEvent->SetNContributorsRange(2);\r | |
28 | cutsEvent->SetPrimaryVertexZrange(-9.5,+9.5);\r | |
29 | \r | |
30 | //-R-P---c-u-t-s--------------------------------------------------------------\r | |
31 | AliFlowTrackCuts *cutsRPTPC = AliFlowTrackCuts::GetStandardTPCStandaloneTrackCuts();\r | |
32 | cutsRPTPC->SetParamType( AliFlowTrackCuts::kGlobal );\r | |
33 | cutsRPTPC->SetAODfilterBit(1); // for AOD compatibility\r | |
34 | AliFlowTrackCuts *cutsRPVZE = AliFlowTrackCuts::GetStandardVZEROOnlyTrackCuts();\r | |
35 | \r | |
36 | //-D-A-U-G-H-T-E-R-S---c-u-t-s------------------------------------------------\r | |
37 | AliESDtrackCuts* cutsDaughter = new AliESDtrackCuts(Form("daughter_cuts_%s",suffixName.Data()) );\r | |
38 | cutsDaughter->SetPtRange(0.2,10.0);\r | |
39 | cutsDaughter->SetEtaRange(-0.8, 0.8 );\r | |
40 | cutsDaughter->SetMinNClustersTPC(80);\r | |
41 | cutsDaughter->SetMaxChi2PerClusterTPC(4.0);\r | |
42 | cutsDaughter->SetRequireTPCRefit(kTRUE);\r | |
43 | cutsDaughter->SetAcceptKinkDaughters(kFALSE);\r | |
44 | \r | |
45 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r | |
46 | AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();\r | |
47 | \r | |
48 | //-----------------STRANGE TASK----------------------------\r | |
49 | AliAnalysisTaskFlowStrange *taskSel = new AliAnalysisTaskFlowStrange(Form("Strange_%s",suffixName.Data()),\r | |
50 | cutsEvent, cutsRPTPC, cutsRPVZE,\r | |
51 | cutsDaughter );\r | |
52 | taskSel->SelectCollisionCandidates(trigger);\r | |
53 | //taskSel->SetDebug();\r | |
54 | taskSel->SetCuts2010(cuts);\r | |
55 | taskSel->SetK0L0(specie);\r | |
56 | //printf( "CMM %d %f %f\n", MassBins(specie), MinMass(specie), MaxMass(specie) );\r | |
57 | taskSel->SetCommonConstants( MassBins(specie), MinMass(specie), MaxMass(specie) );\r | |
58 | AliAnalysisDataContainer *cOutHist = mgr->CreateContainer(Form("OutHistos_%s",suffixName.Data()),\r | |
59 | TList::Class(),\r | |
60 | AliAnalysisManager::kOutputContainer,\r | |
61 | Form("%s.root:Selector_%s",fileName.Data(),\r | |
6d636126 | 62 | folderName.Data()));\r |
893d83c8 | 63 | AliAnalysisDataContainer *exc_TPC = mgr->CreateContainer( Form("TPCEventWithCandidates_%s",suffixName.Data()),\r |
64 | AliFlowEventSimple::Class(),\r | |
65 | AliAnalysisManager::kExchangeContainer );\r | |
66 | AliAnalysisDataContainer *exc_VZE = mgr->CreateContainer( Form("VZEEventWithCandidates_%s",suffixName.Data()),\r | |
67 | AliFlowEventSimple::Class(),\r | |
68 | AliAnalysisManager::kExchangeContainer );\r | |
69 | mgr->AddTask(taskSel);\r | |
70 | mgr->ConnectInput (taskSel,0,cinput1);\r | |
71 | mgr->ConnectOutput(taskSel,1,exc_TPC);\r | |
72 | mgr->ConnectOutput(taskSel,2,exc_VZE);\r | |
73 | mgr->ConnectOutput(taskSel,3,cOutHist);\r | |
74 | \r | |
75 | //-------------------FLOW TASKS----------------------------\r | |
76 | AliFlowTrackSimpleCuts *filter[15], *filterhf[15][2]; // MASS BANDS\r | |
77 | for(int mb=0; mb!=MassBands(0); ++mb) {\r | |
78 | filter[mb] = new AliFlowTrackSimpleCuts( Form("Filter_MB%d",mb) );\r | |
79 | filter[mb]->SetEtaMin( -0.8 ); filter[mb]->SetEtaMax( +0.8 );\r | |
80 | filter[mb]->SetMassMin( MassBandLowEdge(specie,mb) ); filter[mb]->SetMassMax( MassBandLowEdge(specie,mb+1) );\r | |
81 | \r | |
82 | filterhf[mb][0] = new AliFlowTrackSimpleCuts( Form("Filterhf0_MB%d",mb) );\r | |
83 | filterhf[mb][0]->SetEtaMin( 0.0 ); filterhf[mb][0]->SetEtaMax( +0.8 );\r | |
84 | filterhf[mb][0]->SetMassMin( MassBandLowEdge(specie,mb) ); filterhf[mb][0]->SetMassMax( MassBandLowEdge(specie,mb+1) );\r | |
85 | \r | |
86 | filterhf[mb][1] = new AliFlowTrackSimpleCuts( Form("Filterhf1_MB%d",mb) );\r | |
87 | filterhf[mb][1]->SetEtaMin( -0.8 ); filterhf[mb][1]->SetEtaMax( 0.0 );\r | |
88 | filterhf[mb][1]->SetMassMin( MassBandLowEdge(specie,mb) ); filterhf[mb][1]->SetMassMax( MassBandLowEdge(specie,mb+1) );\r | |
89 | \r | |
6d636126 | 90 | AddQCmethod( Form("QCTPCMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_TPC, filter[mb]); // QC TPC\r |
91 | AddSPmethod( Form("SPTPCMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_TPC, filterhf[mb][0], "Qa" ); // SP TPC Qa\r | |
92 | AddSPmethod( Form("SPTPCMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_TPC, filterhf[mb][1], "Qb" ); // SP TPC Qb\r | |
93 | AddSPmethod( Form("SPVZEMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_VZE, filter[mb], "Qa" ); // SP VZE Qa\r | |
94 | AddSPmethod( Form("SPVZEMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_VZE, filter[mb], "Qb" ); // SP VZE Qa\r | |
893d83c8 | 95 | }\r |
96 | }\r | |
97 | \r | |
6d636126 | 98 | void AddQCmethod(char *name, TString myFolder, char *thecuts, int harmonic, \r |
893d83c8 | 99 | AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL) {\r |
6d636126 | 100 | TString fileName = AliAnalysisManager::GetCommonFileName();\r |
101 | myFolder.Append( Form("v%d",harmonic) );\r | |
893d83c8 | 102 | TString myName = Form("%sv%d_%s",name,harmonic,thecuts);\r |
103 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r | |
104 | AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myName.Data()),\r | |
105 | AliFlowEventSimple::Class(),\r | |
106 | AliAnalysisManager::kExchangeContainer );\r | |
107 | AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()),\r | |
108 | NULL, cutsPOI);\r | |
109 | mgr->AddTask(tskFilter);\r | |
110 | mgr->ConnectInput( tskFilter,0,flowEvent);\r | |
111 | mgr->ConnectOutput(tskFilter,1,flowEvent2);\r | |
112 | AliAnalysisDataContainer *outQC = mgr->CreateContainer( myName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,\r | |
6d636126 | 113 | Form("%s:FlowStrange_QC_%s",fileName.Data(),myFolder.Data()) );\r |
893d83c8 | 114 | AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants( Form("TaskQCumulants_%s",myName.Data()),kFALSE );\r |
115 | tskQC->SetApplyCorrectionForNUA(kTRUE);\r | |
116 | tskQC->SetHarmonic(harmonic);\r | |
117 | tskQC->SetBookOnlyBasicCCH(kTRUE);\r | |
118 | mgr->AddTask(tskQC);\r | |
119 | mgr->ConnectInput( tskQC,0,flowEvent2);\r | |
120 | mgr->ConnectOutput(tskQC,1,outQC);\r | |
121 | }\r | |
122 | \r | |
123 | \r | |
6d636126 | 124 | void AddSPmethod(char *name, TString myFolder, char *thecuts, int harmonic,\r |
893d83c8 | 125 | AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL,\r |
126 | char *Qvector) {\r | |
6d636126 | 127 | TString fileName = AliAnalysisManager::GetCommonFileName();\r |
128 | myFolder.Append( Form("v%d",harmonic) );\r | |
893d83c8 | 129 | TString myNameSP = Form("%sv%d%s_%s",name,harmonic,Qvector,thecuts);\r |
130 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r | |
131 | AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myNameSP.Data()),\r | |
132 | AliFlowEventSimple::Class(),\r | |
133 | AliAnalysisManager::kExchangeContainer );\r | |
134 | AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myNameSP.Data()),\r | |
135 | NULL, cutsPOI);\r | |
136 | tskFilter->SetSubeventEtaRange( -5.0, 0.0, 0.0, +5.0 );\r | |
137 | mgr->AddTask(tskFilter);\r | |
138 | mgr->ConnectInput( tskFilter,0,flowEvent);\r | |
139 | mgr->ConnectOutput(tskFilter,1,flowEvent2);\r | |
140 | AliAnalysisDataContainer *outSP = mgr->CreateContainer( myNameSP.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,\r | |
6d636126 | 141 | Form("%s:FlowStrange_SP_%s",fileName.Data(),myFolder.Data()) );\r |
893d83c8 | 142 | AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct( Form("TaskScalarProduct_%s",myNameSP.Data()),kFALSE);\r |
143 | tskSP->SetApplyCorrectionForNUA(kTRUE);\r | |
144 | tskSP->SetHarmonic(harmonic);\r | |
145 | tskSP->SetTotalQvector(Qvector);\r | |
146 | tskSP->SetBookOnlyBasicCCH(kTRUE);\r | |
147 | mgr->AddTask(tskSP);\r | |
148 | mgr->ConnectInput( tskSP,0,flowEvent2);\r | |
149 | mgr->ConnectOutput(tskSP,1,outSP);\r | |
150 | }\r | |
151 | \r | |
152 | double MassBandLowEdge( int nv0, int mb ) {\r | |
153 | if(nv0==0) {\r | |
154 | double lowEdge[15+1]={ 0.452, 0.462, 0.472, 0.482, 0.489, 0.492, 0.495, 0.498,\r | |
155 | 0.501, 0.504, 0.507, 0.514, 0.524, 0.534, 0.544, 0.554 };\r | |
156 | } if(nv0==1) {\r | |
157 | double lowEdge[15+1]={ 1.094, 1.099, 1.104, 1.109, 1.112, 1.114, 1.115, 1.116, \r | |
158 | 1.117, 1.118, 1.120, 1.123, 1.128, 1.133, 1.138, 1.143 };\r | |
159 | }\r | |
160 | return lowEdge[mb];\r | |
161 | }\r | |
162 | \r | |
163 | int MassBands( int nv0 ) {\r | |
164 | if(nv0==0) {\r | |
165 | return 15;\r | |
166 | } else if(nv0==1) {\r | |
167 | return 15;\r | |
168 | }\r | |
169 | }\r | |
170 | \r | |
171 | int MassBins( int nv0 ) {\r | |
172 | if(nv0==0) {\r | |
173 | return 102;\r | |
174 | } else if(nv0==1) {\r | |
175 | return 49;\r | |
176 | }\r | |
177 | }\r | |
178 | \r | |
179 | double MinMass( int nv0 ) {\r | |
180 | return MassBandLowEdge( nv0, 0 );\r | |
181 | }\r | |
182 | \r | |
183 | double MaxMass( int nv0 ) {\r | |
184 | return MassBandLowEdge( nv0, MassBands(nv0) );\r | |
185 | }\r |