]>
Commit | Line | Data |
---|---|---|
06fa848f | 1 | // ONE PRECONF WAGON\r |
8d3e02c8 | 2 | void AddTaskFlowStrange(int trigger, float centrMin, float centrMax, int set, TString folderName="myFolder", TString suffixName="mySuffix", \r |
3 | int specie=0, char* MULT="V0M", int harmonic=2, int matchMC=-1, bool doQC=true, bool doSPTPC=true, bool doSPVZE=true,\r | |
c5dd71c0 | 4 | bool doQA=false, bool useFlowEventCuts=true,\r |
5 | bool runpp=false, bool runpA=false, bool doExtraQA=false, TString calibfile="alien:///alice/cern.ch/user/c/cperez/calib/calibPbPb2010.root") {\r | |
06fa848f | 6 | Double_t c[11];\r |
7 | switch(set) {\r | |
8d3e02c8 | 8 | case(0): // Filtering cuts //\r |
9 | c[0]=0; c[1]=+1; c[2]=+0.500; c[3]=0; c[4]=1e+6; c[5]=0; c[6]=-1; c[7]=+1; c[8]=1e+6; c[9]=1e+6; c[10]=0;\r | |
06fa848f | 10 | break;\r |
8d3e02c8 | 11 | case(1): // Topological cuts // \r |
12 | c[0]=0; c[1]=+1; c[2]=+0.998; c[3]=+0.1; c[4]=0; c[5]=+0.2; c[6]=-0.8; c[7]=+0.8; c[8]=+3.0; c[9]=+3.0; c[10]=5;\r | |
06fa848f | 13 | break;\r |
14 | default:\r | |
15 | return;\r | |
16 | }\r | |
17 | AddTaskFlowStrange(trigger, centrMin, centrMax, folderName, suffixName, specie,\r | |
8d3e02c8 | 18 | c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8],c[9],c[10],\r |
c5dd71c0 | 19 | MULT, harmonic, matchMC, doQC, doSPTPC, doSPVZE, doQA, useFlowEventCuts,\r |
20 | runpp, runpA, doExtraQA, calibfile);\r | |
6d636126 | 21 | }\r |
392bb597 | 22 | // ALL CENTRALITIES\r |
23 | void AddTaskFlowStrange(int trigger, TString folderName="myFolder", TString suffix="mySuffix", int specie=0,\r | |
24 | double cut0, double cut1, double cut2, double cut3, double cut4, double cut5, double cut6, double cut7, double cut8,\r | |
25 | double cut9, double cut10, char* MULT="V0M", int harmonic=2, int matchMC=-1,\r | |
c5dd71c0 | 26 | bool doQC=true, bool doSPTPC=true, bool doSPVZE=true, bool doQA=false, bool useFlowEventCuts=true,\r |
27 | bool runpp=false, bool runpA=false, bool doExtraQA=false, TString calibfile="alien:///alice/cern.ch/user/c/cperez/calib/calibPbPb2010.root") {\r | |
392bb597 | 28 | int centMin[8] = {00,05,10,20,30,40,50,60};\r |
29 | int centMax[8] = {05,10,20,30,40,50,60,80};\r | |
30 | TString particle="none";\r | |
31 | if(specie==0) particle="kze";\r | |
32 | if(specie==1) particle="lda";\r | |
33 | if(specie==90) particle="kch";\r | |
34 | TString name;\r | |
35 | for(int i=0; i!=8; ++i) {\r | |
36 | name = Form("%s%02d%02d%s",particle.Data(),centMin[i],centMax[i],suffix.Data());\r | |
37 | AddTaskFlowStrange(trigger, centMin[i], centMax[i], folderName, name, specie,\r | |
38 | cut0, cut1, cut2, cut3, cut4, cut5, cut6, cut7, cut8, cut9, cut10, MULT, harmonic, matchMC,\r | |
c5dd71c0 | 39 | doQC, doSPTPC, doSPVZE, doQA, useFlowEventCuts,\r |
40 | runpp, runpA, doExtraQA, calibfile);\r | |
392bb597 | 41 | }\r |
42 | }\r | |
06fa848f | 43 | // ONE WAGON\r |
44 | void AddTaskFlowStrange(int trigger, float centrMin, float centrMax, TString folderName="myFolder", TString suffixName="mySuffix", int specie=0, \r | |
8d3e02c8 | 45 | double cut0, double cut1, double cut2, double cut3, double cut4, double cut5, double cut6, double cut7, double cut8,\r |
46 | double cut9, double cut10, char* MULT="V0M", int harmonic=2, int matchMC=-1, \r | |
c5dd71c0 | 47 | bool doQC=true, bool doSPTPC=true, bool doSPVZE=true, bool doQA=false, bool useFlowEventCuts=true, \r |
48 | bool runpp=false, bool runpA=false, bool doExtraQA=false, TString calibfile="alien:///alice/cern.ch/user/c/cperez/calib/calibPbPb2010.root") {\r | |
893d83c8 | 49 | TString fileName = AliAnalysisManager::GetCommonFileName();\r |
50 | fileName.ReplaceAll(".root","");\r | |
51 | \r | |
52 | //-E-V-E-N-T- -c-u-t-s--------------------------------------------------------\r | |
53 | AliFlowEventCuts* cutsEvent = new AliFlowEventCuts(Form("event_cuts_%s",suffixName.Data()));\r | |
54 | cutsEvent->SetCentralityPercentileRange(centrMin,centrMax);\r | |
55 | if(MULT=="V0M")\r | |
56 | cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kV0);\r | |
57 | else\r | |
58 | cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kTPConly);\r | |
59 | cutsEvent->SetRefMultMethod(AliFlowEventCuts::kSPDtracklets);\r | |
60 | cutsEvent->SetNContributorsRange(2);\r | |
06fa848f | 61 | cutsEvent->SetPrimaryVertexZrange(-10.0,+10.0);\r |
c5dd71c0 | 62 | cutsEvent->SetCutTPCmultiplicityOutliers();\r |
893d83c8 | 63 | \r |
64 | //-R-P---c-u-t-s--------------------------------------------------------------\r | |
65 | AliFlowTrackCuts *cutsRPTPC = AliFlowTrackCuts::GetStandardTPCStandaloneTrackCuts();\r | |
66 | cutsRPTPC->SetParamType( AliFlowTrackCuts::kGlobal );\r | |
67 | cutsRPTPC->SetAODfilterBit(1); // for AOD compatibility\r | |
68 | AliFlowTrackCuts *cutsRPVZE = AliFlowTrackCuts::GetStandardVZEROOnlyTrackCuts();\r | |
69 | \r | |
70 | //-D-A-U-G-H-T-E-R-S---c-u-t-s------------------------------------------------\r | |
71 | AliESDtrackCuts* cutsDaughter = new AliESDtrackCuts(Form("daughter_cuts_%s",suffixName.Data()) );\r | |
06fa848f | 72 | cutsDaughter->SetPtRange(0.2,12.0);\r |
893d83c8 | 73 | cutsDaughter->SetEtaRange(-0.8, 0.8 );\r |
06fa848f | 74 | cutsDaughter->SetMinNClustersTPC(70);\r |
893d83c8 | 75 | cutsDaughter->SetMaxChi2PerClusterTPC(4.0);\r |
76 | cutsDaughter->SetRequireTPCRefit(kTRUE);\r | |
77 | cutsDaughter->SetAcceptKinkDaughters(kFALSE);\r | |
78 | \r | |
79 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r | |
80 | AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();\r | |
81 | \r | |
82 | //-----------------STRANGE TASK----------------------------\r | |
83 | AliAnalysisTaskFlowStrange *taskSel = new AliAnalysisTaskFlowStrange(Form("Strange_%s",suffixName.Data()),\r | |
84 | cutsEvent, cutsRPTPC, cutsRPVZE,\r | |
85 | cutsDaughter );\r | |
86 | taskSel->SelectCollisionCandidates(trigger);\r | |
06fa848f | 87 | Double_t cuts[11];\r |
88 | cuts[0]=cut0; cuts[1]=cut1; cuts[2]=cut2; cuts[3]=cut3; cuts[4]=cut4; cuts[5]=cut5; cuts[6]=cut6; cuts[7]=cut7; cuts[8]=cut8; cuts[9]=cut9; cuts[10]=cut10;\r | |
89 | taskSel->SetCuts(cuts);\r | |
8d3e02c8 | 90 | taskSel->SetQA(doQA);\r |
893d83c8 | 91 | taskSel->SetK0L0(specie);\r |
06fa848f | 92 | taskSel->SetMCmatch(matchMC);\r |
8d3e02c8 | 93 | taskSel->SetUseEventSelection(useFlowEventCuts);\r |
06fa848f | 94 | taskSel->SetCommonConstants( SFT_MassBins(specie), SFT_MinMass(specie), SFT_MaxMass(specie) );\r |
c5dd71c0 | 95 | taskSel->SetExtraQA( doExtraQA );\r |
96 | taskSel->Setpp( runpp );\r | |
97 | taskSel->SetpA( runpA );\r | |
98 | TFile *filecal = TFile::Open( calibfile.Data() );\r | |
99 | if( (!filecal) || ( filecal && !filecal->IsOpen()) ){\r | |
100 | printf("AddTaskStrange -> no complementary calibration file needed? Very good.\n");\r | |
101 | } else {\r | |
102 | TList *myCalib = (TList*)filecal->Get("calibration");\r | |
103 | if(myCalib) taskSel->SetCalib(myCalib);\r | |
104 | }\r | |
893d83c8 | 105 | AliAnalysisDataContainer *cOutHist = mgr->CreateContainer(Form("OutHistos_%s",suffixName.Data()),\r |
106 | TList::Class(),\r | |
107 | AliAnalysisManager::kOutputContainer,\r | |
108 | Form("%s.root:Selector_%s",fileName.Data(),\r | |
6d636126 | 109 | folderName.Data()));\r |
893d83c8 | 110 | AliAnalysisDataContainer *exc_TPC = mgr->CreateContainer( Form("TPCEventWithCandidates_%s",suffixName.Data()),\r |
111 | AliFlowEventSimple::Class(),\r | |
112 | AliAnalysisManager::kExchangeContainer );\r | |
113 | AliAnalysisDataContainer *exc_VZE = mgr->CreateContainer( Form("VZEEventWithCandidates_%s",suffixName.Data()),\r | |
114 | AliFlowEventSimple::Class(),\r | |
115 | AliAnalysisManager::kExchangeContainer );\r | |
116 | mgr->AddTask(taskSel);\r | |
117 | mgr->ConnectInput (taskSel,0,cinput1);\r | |
118 | mgr->ConnectOutput(taskSel,1,exc_TPC);\r | |
119 | mgr->ConnectOutput(taskSel,2,exc_VZE);\r | |
120 | mgr->ConnectOutput(taskSel,3,cOutHist);\r | |
121 | \r | |
8d3e02c8 | 122 | if( (!doQC) && (!doSPVZE) && (!doSPVZE) ) return;\r |
123 | \r | |
893d83c8 | 124 | //-------------------FLOW TASKS----------------------------\r |
06fa848f | 125 | AliFlowTrackSimpleCuts *filter[12], *filterhf[12][2]; // MASS BANDS\r |
126 | for(int mb=0; mb!=12; ++mb) {\r | |
893d83c8 | 127 | filter[mb] = new AliFlowTrackSimpleCuts( Form("Filter_MB%d",mb) );\r |
128 | filter[mb]->SetEtaMin( -0.8 ); filter[mb]->SetEtaMax( +0.8 );\r | |
06fa848f | 129 | filter[mb]->SetMassMin( SFT_MassBandLowEdge(specie,mb) ); filter[mb]->SetMassMax( SFT_MassBandLowEdge(specie,mb+1) );\r |
893d83c8 | 130 | \r |
131 | filterhf[mb][0] = new AliFlowTrackSimpleCuts( Form("Filterhf0_MB%d",mb) );\r | |
132 | filterhf[mb][0]->SetEtaMin( 0.0 ); filterhf[mb][0]->SetEtaMax( +0.8 );\r | |
06fa848f | 133 | filterhf[mb][0]->SetMassMin( SFT_MassBandLowEdge(specie,mb) ); filterhf[mb][0]->SetMassMax( SFT_MassBandLowEdge(specie,mb+1) );\r |
893d83c8 | 134 | \r |
135 | filterhf[mb][1] = new AliFlowTrackSimpleCuts( Form("Filterhf1_MB%d",mb) );\r | |
136 | filterhf[mb][1]->SetEtaMin( -0.8 ); filterhf[mb][1]->SetEtaMax( 0.0 );\r | |
06fa848f | 137 | filterhf[mb][1]->SetMassMin( SFT_MassBandLowEdge(specie,mb) ); filterhf[mb][1]->SetMassMax( SFT_MassBandLowEdge(specie,mb+1) );\r |
138 | \r | |
139 | if(doQC) {\r | |
140 | SFT_AddQCmethod( Form("QCTPCMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_TPC, filter[mb]); // QC TPC\r | |
141 | }\r | |
142 | if(doSPTPC) {\r | |
143 | SFT_AddSPmethod( Form("SPTPCMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_TPC, filterhf[mb][0], "Qa" ); // SP TPC Qa\r | |
144 | SFT_AddSPmethod( Form("SPTPCMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_TPC, filterhf[mb][1], "Qb" ); // SP TPC Qb\r | |
145 | }\r | |
146 | if(doSPVZE) {\r | |
147 | SFT_AddSPmethod( Form("SPVZEMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_VZE, filter[mb], "Qa" ); // SP VZE Qa\r | |
148 | SFT_AddSPmethod( Form("SPVZEMB%d",mb), folderName.Data(), suffixName.Data(), harmonic, exc_VZE, filter[mb], "Qb" ); // SP VZE Qa\r | |
149 | }\r | |
893d83c8 | 150 | }\r |
151 | }\r | |
06fa848f | 152 | // ADDING QC METHOD\r |
153 | void SFT_AddQCmethod(char *name, TString myFolder, char *thecuts, int harmonic, \r | |
893d83c8 | 154 | AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL) {\r |
6d636126 | 155 | TString fileName = AliAnalysisManager::GetCommonFileName();\r |
156 | myFolder.Append( Form("v%d",harmonic) );\r | |
893d83c8 | 157 | TString myName = Form("%sv%d_%s",name,harmonic,thecuts);\r |
158 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r | |
159 | AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myName.Data()),\r | |
160 | AliFlowEventSimple::Class(),\r | |
161 | AliAnalysisManager::kExchangeContainer );\r | |
162 | AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myName.Data()),\r | |
163 | NULL, cutsPOI);\r | |
164 | mgr->AddTask(tskFilter);\r | |
165 | mgr->ConnectInput( tskFilter,0,flowEvent);\r | |
166 | mgr->ConnectOutput(tskFilter,1,flowEvent2);\r | |
167 | AliAnalysisDataContainer *outQC = mgr->CreateContainer( myName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,\r | |
6d636126 | 168 | Form("%s:FlowStrange_QC_%s",fileName.Data(),myFolder.Data()) );\r |
893d83c8 | 169 | AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants( Form("TaskQCumulants_%s",myName.Data()),kFALSE );\r |
170 | tskQC->SetApplyCorrectionForNUA(kTRUE);\r | |
171 | tskQC->SetHarmonic(harmonic);\r | |
172 | tskQC->SetBookOnlyBasicCCH(kTRUE);\r | |
173 | mgr->AddTask(tskQC);\r | |
174 | mgr->ConnectInput( tskQC,0,flowEvent2);\r | |
175 | mgr->ConnectOutput(tskQC,1,outQC);\r | |
176 | }\r | |
06fa848f | 177 | // ADDING SP METHOD\r |
178 | void SFT_AddSPmethod(char *name, TString myFolder, char *thecuts, int harmonic,\r | |
893d83c8 | 179 | AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL,\r |
180 | char *Qvector) {\r | |
6d636126 | 181 | TString fileName = AliAnalysisManager::GetCommonFileName();\r |
182 | myFolder.Append( Form("v%d",harmonic) );\r | |
893d83c8 | 183 | TString myNameSP = Form("%sv%d%s_%s",name,harmonic,Qvector,thecuts);\r |
184 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r | |
185 | AliAnalysisDataContainer *flowEvent2 = mgr->CreateContainer( Form("Filter_%s", myNameSP.Data()),\r | |
186 | AliFlowEventSimple::Class(),\r | |
187 | AliAnalysisManager::kExchangeContainer );\r | |
188 | AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myNameSP.Data()),\r | |
189 | NULL, cutsPOI);\r | |
190 | tskFilter->SetSubeventEtaRange( -5.0, 0.0, 0.0, +5.0 );\r | |
191 | mgr->AddTask(tskFilter);\r | |
192 | mgr->ConnectInput( tskFilter,0,flowEvent);\r | |
193 | mgr->ConnectOutput(tskFilter,1,flowEvent2);\r | |
194 | AliAnalysisDataContainer *outSP = mgr->CreateContainer( myNameSP.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,\r | |
6d636126 | 195 | Form("%s:FlowStrange_SP_%s",fileName.Data(),myFolder.Data()) );\r |
893d83c8 | 196 | AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct( Form("TaskScalarProduct_%s",myNameSP.Data()),kFALSE);\r |
197 | tskSP->SetApplyCorrectionForNUA(kTRUE);\r | |
198 | tskSP->SetHarmonic(harmonic);\r | |
199 | tskSP->SetTotalQvector(Qvector);\r | |
200 | tskSP->SetBookOnlyBasicCCH(kTRUE);\r | |
201 | mgr->AddTask(tskSP);\r | |
202 | mgr->ConnectInput( tskSP,0,flowEvent2);\r | |
203 | mgr->ConnectOutput(tskSP,1,outSP);\r | |
204 | }\r | |
06fa848f | 205 | // MASSBAND HELPER\r |
206 | double SFT_MassBandLowEdge( int nv0, int mb ) {\r | |
207 | switch(nv0) {\r | |
208 | case(0):\r | |
209 | double lowEdge[13]={ 0.412, 0.440, 0.468, 0.484, 0.492, 0.496, 0.500, 0.504, 0.508, 0.516, 0.532, 0.560, 0.588 };\r | |
210 | break;\r | |
211 | case(1):\r | |
212 | double lowEdge[13]={ 1.075, 1.090, 1.100, 1.108, 1.112, 1.114, 1.116, 1.118, 1.120, 1.124, 1.132, 1.142, 1.167 };\r | |
213 | break;\r | |
214 | default:\r | |
215 | double lowEdge[13]={ 0.000, 0.100, 0.200, 0.300, 0.400, 0.500, 0.600, 0.700, 0.800, 0.840, 0.860, 0.900, 1.000 };\r | |
893d83c8 | 216 | }\r |
217 | return lowEdge[mb];\r | |
218 | }\r | |
06fa848f | 219 | // MASSBAND HELPER\r |
220 | int SFT_MassBands( int nv0 ) {\r | |
221 | return 12;\r | |
893d83c8 | 222 | }\r |
06fa848f | 223 | // MASSBAND HELPER\r |
224 | int SFT_MassBins( int nv0 ) {\r | |
225 | int bins=88;\r | |
226 | switch(nv0) {\r | |
227 | case(0):\r | |
228 | bins=88;\r | |
229 | break;\r | |
230 | case(1):\r | |
231 | bins=92;\r | |
232 | break;\r | |
233 | default:\r | |
234 | bins=13;\r | |
235 | break;\r | |
893d83c8 | 236 | }\r |
06fa848f | 237 | return bins;\r |
893d83c8 | 238 | }\r |
06fa848f | 239 | // MASSBAND HELPER\r |
240 | double SFT_MinMass( int nv0 ) {\r | |
241 | return SFT_MassBandLowEdge( nv0, 0 );\r | |
893d83c8 | 242 | }\r |
06fa848f | 243 | // MASSBAND HELPER\r |
244 | double SFT_MaxMass( int nv0 ) {\r | |
245 | return SFT_MassBandLowEdge( nv0, SFT_MassBands(nv0) );\r | |
893d83c8 | 246 | }\r |