]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FLOW/macros/AddTaskFlowCascade.C
Corrected end-of-line behavior
[u/mrichter/AliRoot.git] / PWGCF / FLOW / macros / AddTaskFlowCascade.C
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);
4
5   AddTaskFlowCascade(trigger, centrMin, centrMax, "Omega", 
6                      Form("Omega%d%dcut%d", centrMin,centrMax, cut), 1, cut, "V0M", "VZESP", harmonic);
7 }
8
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","");
15
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);
19   if(MULT=="V0M")
20     cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kV0);
21   else
22     cutsEvent->SetCentralityPercentileMethod(AliFlowEventCuts::kTPConly);
23   cutsEvent->SetRefMultMethod(AliFlowEventCuts::kSPDtracklets);
24   cutsEvent->SetNContributorsRange(2);
25   cutsEvent->SetPrimaryVertexZrange(-10.,+10.);
26
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
32   
33   AliFlowTrackCuts *cutsRPVZE = AliFlowTrackCuts::GetStandardVZEROOnlyTrackCuts();
34   //  AliFlowTrackCuts* trkCuts = new AliFlowTrackCuts();
35   //AliFlowTrackCuts *cutsRPVZE = trkCuts->GetStandardVZEROOnlyTrackCuts();
36   cutsRPVZE->SetApplyRecentering(kTRUE);
37   
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);
49
50   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
51   AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
52
53   //-----------------Cascade TASK----------------------------
54   AliAnalysisTaskFlowCascade *taskSel 
55     = new AliAnalysisTaskFlowCascade(Form("Cascade_%s",suffixName.Data()),
56                                      cutsEvent, cutsRPTPC, cutsRPVZE,
57                                      cutsDaughter );
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()),
66                            TList::Class(),
67                            AliAnalysisManager::kOutputContainer,
68                            Form("%s:Selector_%s",fileName.Data(),
69                                 folderName.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);
83
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) );
92
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) );
98
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) );
104
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
113     }
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
121     }
122   }
123 }
124
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()),
138                                    NULL, cutsPOI);
139   mgr->AddTask(tskFilter);
140   mgr->ConnectInput( tskFilter, 0, flowEvent);
141   mgr->ConnectOutput(tskFilter, 1, flowEvent2);
142
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);
151   mgr->AddTask(tskQC);
152   mgr->ConnectInput( tskQC, 0, flowEvent2);
153   mgr->ConnectOutput(tskQC, 1, outQC);
154 }
155
156
157 void MSFT_AddSPmethod(char *name, TString myFolder, char *thecuts, int harmonic,
158                       AliAnalysisDataContainer *flowEvent, AliFlowTrackSimpleCuts *cutsPOI=NULL,
159                       char *Qvector) {
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()),
170                                    NULL, cutsPOI);
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);
184   mgr->AddTask(tskSP);
185   mgr->ConnectInput( tskSP,0,flowEvent2);
186   mgr->ConnectOutput(tskSP,1,outSP);
187 }
188
189 double MSFT_MassBandLowEdge( int nv0, int mb ) {
190   if(nv0==0) {
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};
193   } if(nv0==1) {
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 };
196   }
197   return lowEdge[mb];
198 }
199
200 int MSFT_MassBands( int nv0 ) {
201   if(nv0==0) {
202     return 15;
203   } else if(nv0==1) {
204     return 15;
205   }
206 }
207
208 int MSFT_MassBins( int nv0 ) {
209   if(nv0==0) {
210     return 90;
211   } else if(nv0==1) {
212     return 90;
213   }
214 }
215
216 double MSFT_MinMass( int nv0 ) {
217   return MSFT_MassBandLowEdge( nv0, 0 );
218 }
219
220 double MSFT_MaxMass( int nv0 ) {
221   return MSFT_MassBandLowEdge( nv0, MSFT_MassBands(nv0) );
222 }