]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/TPC/macros/AddTaskTPCcalibResidualPID.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGPP / TPC / macros / AddTaskTPCcalibResidualPID.C
1 AliAnalysisTask *AddTaskTPCcalibResidualPID(TString period = "", Bool_t isPbpOrpPb = kFALSE,
2                                             Bool_t producePIDqa = kTRUE, Bool_t useTPCCutMIGeo = kTRUE,
3                                             Bool_t writeAdditionalQA = kFALSE,
4                                             Bool_t cutOnProdRadiusForV0el = kTRUE,
5                                             Bool_t correctdEdxEtaDependence = kFALSE, 
6                                             Bool_t correctdEdxMultiplicityDependence = kFALSE,
7                                             Bool_t useMCinfo = kTRUE){
8   //get the current analysis manager
9   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
10   if (!mgr) {
11     Error("AddTask_statsQA_TPCresPID", "No analysis manager found.");
12     return 0;
13   }
14
15   //========= Add task to the ANALYSIS manager =====
16   AliTPCcalibResidualPID *task=new AliTPCcalibResidualPID("TPCresPID");
17   task->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kINT7);
18
19   // which THnSparse should be produced
20   task->SetProducePIDqa(producePIDqa);
21   
22   AliESDtrackCuts* esdTrackCuts = 0x0;
23   AliESDtrackCuts* esdTrackCutsV0 = 0x0;
24   
25   if (period.Contains("LHC11") || period.Contains("LHC12") || period.Contains("LHC13")) {
26     esdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE);
27     esdTrackCutsV0 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
28     task->SetESDtrackCuts(esdTrackCuts);
29     //task->SetESDtrackCutsV0(esdTrackCutsV0);
30     printf("Using standard ITS-TPC track cuts 2011.\n");
31   }
32   else if (period.Contains("LHC10")) {
33     esdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE);
34     esdTrackCutsV0 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE);
35     task->SetESDtrackCuts(esdTrackCuts);
36     //task->SetESDtrackCutsV0(esdTrackCutsV0);
37     printf("Using standard ITS-TPC track cuts 2010.\n");
38   }
39   else  {
40     esdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE);
41     esdTrackCutsV0 = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
42     task->SetESDtrackCuts(esdTrackCuts);
43     //task->SetESDtrackCutsV0(esdTrackCutsV0);
44     
45     printf("WARNING: Cuts not configured for this period!!! Using standard ITS-TPC track cuts 2011\n");
46   }
47   
48   task->SetIsPbpOrpPb(isPbpOrpPb);
49   if (task->GetIsPbpOrpPb()) {
50     printf("Collision type pPb/Pbp set -> Adapting vertex cuts!\n");
51   }
52   else  {
53     printf("Collision type different from pPb/Pbp -> Using standard vertex cuts!\n");
54   }
55
56   task->SetZvtxCutEvent(10.0);
57   printf("Cut on z position of vertex: %.2f cm\n", task->GetZvtxCutEvent());
58   
59   task->SetUseTPCCutMIGeo(useTPCCutMIGeo);
60   printf("UseTPCCutMIGeo: %d\n", task->GetUseTPCCutMIGeo());
61   
62   task->SetWriteAdditionalOutput(writeAdditionalQA);
63   
64   task->SetCutOnProdRadiusForV0el(cutOnProdRadiusForV0el);
65   
66   task->SetCorrectdEdxEtaDependence(correctdEdxEtaDependence);
67   
68   task->SetCorrectdEdxMultiplicityDependence(correctdEdxMultiplicityDependence);
69   
70   task->SetUseMCinfo(useMCinfo);
71   
72   printf("Eta correction: %s for this task\n", 
73          task->GetCorrectdEdxEtaDependence() ? "enabled (only works if enabled in PIDresponse!)" : "explicitly disabled");
74   
75   printf("Multiplicity correction: %s for this task\n", 
76          task->GetCorrectdEdxMultiplicityDependence() ? "enabled (only works if enabled in PIDresponse!)" : "explicitly disabled");
77
78   printf("Use MC info: %d\n", task->GetUseMCinfo());
79   
80   printf("WriteAdditionalOutput: %d\n", task->GetWriteAdditionalOutput());
81   
82   printf("CutOnProdRadiusForV0el: %d\n", task->GetCutOnProdRadiusForV0el());
83   
84   
85   mgr->AddTask(task);
86
87   //================================================
88   //              data containers
89   //================================================
90   //            find input container
91   
92   
93   //            define output containers
94   AliAnalysisDataContainer *coutput1 =
95     mgr->CreateContainer("TPCresPID", TObjArray::Class(),
96                          AliAnalysisManager::kOutputContainer,"TPCresidualPID.root");
97   
98   //           connect containers
99   mgr->ConnectInput  (task,  0, mgr->GetCommonInputContainer() );
100   mgr->ConnectOutput (task,  1, coutput1);
101   
102   if (task->GetWriteAdditionalOutput()) {
103     AliAnalysisDataContainer *coutput2 =
104       mgr->CreateContainer("TPCresPIDQA", TObjArray::Class(),
105                           AliAnalysisManager::kOutputContainer,"TPCresidualPIDQA.root");
106     
107     AliAnalysisDataContainer *coutput3 =
108       mgr->CreateContainer("TPCresPIDTreeEl", TTree::Class(),
109                           AliAnalysisManager::kOutputContainer,"TPCresidualPIDTree_el.root");
110     
111     AliAnalysisDataContainer *coutput4 =
112       mgr->CreateContainer("TPCresPIDTreePi", TTree::Class(),
113                           AliAnalysisManager::kOutputContainer,"TPCresidualPIDTree_pi.root");
114     
115     AliAnalysisDataContainer *coutput5 =
116       mgr->CreateContainer("TPCresPIDTreePr", TTree::Class(),
117                           AliAnalysisManager::kOutputContainer,"TPCresidualPIDTree_pr.root");
118     mgr->ConnectOutput (task,  2, coutput2);
119     mgr->ConnectOutput (task,  3, coutput3);
120     mgr->ConnectOutput (task,  4, coutput4);
121     mgr->ConnectOutput (task,  5, coutput5);
122   }
123   
124   return task;
125 }