]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/macros/DiHadronPID/AddTaskDiHadronPIDpp.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / Correlations / macros / DiHadronPID / AddTaskDiHadronPIDpp.C
1 AliAnalysisTaskDiHadronPID* AddTaskDiHadronPIDpp( // for AOD113 2.76TeV
2         Int_t NDEtaBins = 32,
3         Int_t NDPhiBins = 32,
4         Int_t MinEventsForMixing = 5,
5         Int_t PoolTrackDepth = 2000,
6         Int_t PoolSize = 1000,
7         Bool_t MixEvents = kTRUE,
8         Bool_t MixTriggers = kTRUE,
9         Double_t MinCentrality = 5.,
10         Double_t MaxCentrality = 0.,
11         const char* CentralityEstimator = "V0M",
12         Double_t maxVertexZ = 10.,
13         Double_t maxEta = 0.8,
14         Double_t minAssociatedPt = 0.2,
15         Double_t maxAssociatedPt = 5.0,
16         Double_t minTriggerPt = 5.,
17         Double_t maxTriggerPt = 10.,
18         Bool_t requestAllSingleTrackHistos = kFALSE,
19         Int_t FilterMaskTrigger = 7,
20         Int_t FilterMaskAssociated = 5,
21         Bool_t isPbPb = kFALSE,
22         Bool_t isMC = kFALSE,
23         Int_t DebugLevel = 0,
24         Bool_t MakeTOFCorrelations = kTRUE,
25         Bool_t MakeTOFTPCCorrelationsPi = kFALSE,
26         Bool_t MakeTOFTPCCorrelationsKa = kFALSE,
27         Bool_t MakeTOFTPCCorrelationsPr = kFALSE,               
28         Double_t TOFIntervalFactorTOFTPC = 1.,
29         Bool_t ExtendPtAxis = kFALSE,
30         const char* outputFileName = 0,
31         const char* containerName = "DiHadronPID",
32         const char* folderName = "PWGCF_DiHadronPID")
33
34 {
35         // Get a pointer to the analysis manager.
36     AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
37     if (!mgr) {
38         cout<<"AddTaskDiHadronPIDpp.C -> No analysis manager found."<<endl;
39         return 0x0;
40     }   
41
42     // Create an instance of the task.
43     AliAnalysisTaskDiHadronPID* DiHadronPIDTask = new AliAnalysisTaskDiHadronPID(containerName);
44
45     // Configure the task.
46     DiHadronPIDTask->SetNDEtaBins(NDEtaBins);
47     DiHadronPIDTask->SetNDPhiBins(NDPhiBins);
48     DiHadronPIDTask->SetMinEventsForMixing(MinEventsForMixing);
49     DiHadronPIDTask->SetPoolTrackDepth(PoolTrackDepth);
50     DiHadronPIDTask->SetPoolSize(PoolSize);
51     DiHadronPIDTask->SetMixEvents(MixEvents);
52     DiHadronPIDTask->SetMixTriggers(MixTriggers);
53     DiHadronPIDTask->SetDebugLevel(DebugLevel);
54     DiHadronPIDTask->SetMakeTOFCorrelations(MakeTOFCorrelations);
55     DiHadronPIDTask->SetMakeTOFTPCCorrelationsPi(MakeTOFTPCCorrelationsPi);
56     DiHadronPIDTask->SetMakeTOFTPCCorrelationsKa(MakeTOFTPCCorrelationsKa);
57     DiHadronPIDTask->SetMakeTOFTPCCorrelationsPr(MakeTOFTPCCorrelationsPr);        
58     DiHadronPIDTask->SetTOFIntervalFactorTOFTPC(TOFIntervalFactorTOFTPC);
59     DiHadronPIDTask->SetExtendPtAxis(ExtendPtAxis);
60
61     // Configure and add Event Cuts.
62         AliAODEventCutsDiHadronPID* eventcuts = new AliAODEventCutsDiHadronPID("EventCuts");
63         eventcuts->SetTrigger(AliVEvent::kMB);
64         // eventcuts->SetCentrality(MaxCentrality, MinCentrality);
65         eventcuts->SetMaxVertexZ(maxVertexZ);
66         // eventcuts->SetCentralityEstimator(CentralityEstimator);
67         eventcuts->SetIsPbPb(isPbPb);
68         eventcuts->SetDemandContributorsOrSPDVertex();
69         eventcuts->SetDebugLevel(DebugLevel);
70         DiHadronPIDTask->SetEventCuts(eventcuts);
71
72         // Configure and add track cuts for trigger.
73         AliAODTrackCutsDiHadronPID* triggercuts = new AliAODTrackCutsDiHadronPID("TrackCutsTrigger");
74         triggercuts->SetIsMC(isMC);
75         triggercuts->SetFilterMask(1<<FilterMaskTrigger);
76         triggercuts->SetPtRange(minTriggerPt,maxTriggerPt);
77         triggercuts->SetMaxEta(maxEta);
78         triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllCharged);
79         triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPositive);
80         triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegative);
81         if (requestAllSingleTrackHistos) {
82                 triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllPion);
83                 triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPosPion);
84                 triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegPion);                                     
85                 triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllKaon);
86                 triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPosKaon);
87                 triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegKaon);             
88                 triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllProton);
89                 triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPosProton);
90                 triggercuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegProton);
91         }       
92         triggercuts->SetDebugLevel(DebugLevel);
93         DiHadronPIDTask->SetTrackCutsTrigger(triggercuts);
94
95         // Configure and add track cuts for associateds.
96         AliAODTrackCutsDiHadronPID* associatedscuts = new AliAODTrackCutsDiHadronPID("TrackCutsAssociated");
97         associatedscuts->SetIsMC(isMC);
98         associatedscuts->SetFilterMask(1<<FilterMaskAssociated);
99         associatedscuts->SetPtRange(minAssociatedPt,maxAssociatedPt);
100         associatedscuts->SetMaxEta(maxEta);
101         // associatedscuts->SetMinimumNumberOfTPCClusters(70); // marek doestn do this
102         associatedscuts->SetDemandSPDCluster();
103         ULong_t associatedflags = (UInt_t)(AliAODTrack::kTPCrefit)|(UInt_t)(AliAODTrack::kITSrefit)|(UInt_t)(AliAODTrack::kTOFout)|(UInt_t)(AliAODTrack::kTIME);        
104         associatedscuts->SetDemandFlags(associatedflags);
105         associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllCharged);
106         associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPositive);
107         associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegative);
108         if (requestAllSingleTrackHistos) {
109                 associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllPion);
110                 associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPosPion);
111                 associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegPion);                                 
112                 associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllKaon);
113                 associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPosKaon);
114                 associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegKaon);         
115                 associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kAllProton);
116                 associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kPosProton);
117                 associatedscuts->RequestQAHistos(AliAODTrackCutsDiHadronPID::kNegProton);
118         }
119         associatedscuts->SetDebugLevel(DebugLevel);
120         DiHadronPIDTask->SetTrackCutsAssociated(associatedscuts);
121
122         // Add the task.
123         mgr->AddTask(DiHadronPIDTask);
124     
125         // Data containers.
126         AliAnalysisDataContainer* cinput  = mgr->GetCommonInputContainer();
127         mgr->ConnectInput(DiHadronPIDTask, 0, cinput); 
128         
129         if (!outputFileName) {outputFileName = AliAnalysisManager::GetCommonFileName();}
130         
131         AliAnalysisDataContainer* coutput1 = mgr->CreateContainer(containerName, TList::Class(),
132                          AliAnalysisManager::kOutputContainer,Form("%s:%s", outputFileName, folderName));
133         
134         mgr->ConnectOutput(DiHadronPIDTask,1,coutput1);
135         
136         return DiHadronPIDTask;
137
138 }