]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/TOF/AddTaskTOFqaID.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGPP / TOF / AddTaskTOFqaID.C
1 /*  created by fbellini@cern.ch on 29/04/2013 */
2 /*  last modified by fbellini   on 29/04/2013 */
3
4 // UInt_t kTriggerMuonAll = AliVEvent::kMUL7 | AliVEvent::kMUSH7 | AliVEvent::kMUU7 | AliVEvent::kMUS7;
5 // UInt_t kTriggerMuonBarell = AliVEvent::kMUU7;
6 // UInt_t kTriggerEMC   = AliVEvent::kEMC7;
7 // UInt_t kTriggerHM   = AliVEvent::kHighMult;
8 // UInt_t kTriggerInt = AliVEvent::kAnyINT;
9 // UInt_t kTriggerMask = kTriggerInt;
10
11 AliAnalysisTaskSE * AddTaskTOFqaID(Bool_t flagEnableAdvancedCheck = kFALSE, 
12                                    UInt_t triggerMask = AliVEvent::kAnyINT, 
13                                    Int_t trackCutSetTOFqa = 0, 
14                                    Bool_t flagEnableChargeSplit = kFALSE,
15                                    TString cutName = "",
16                                    Bool_t isMC = kFALSE, 
17                                    Short_t absPdgCode = 0) 
18 {
19   // Task for checking TOF QA
20  
21   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
22   if (!mgr) {
23     ::Error("AddTask", "No analysis manager to connect to.");
24     return NULL;
25   }   
26
27   // Check the analysis type using the event handlers connected to the analysis manager.
28   if (!mgr->GetInputEventHandler()) {
29     ::Error("AddTask", "This task requires an input event handler");
30     return NULL;
31   }
32   TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
33  
34   if (isMC && (absPdgCode<0)) {
35     ::Error("AddTask","Invalid selected PDG code for MC. Set absPdgCode=0 for no specie selection.");
36   }
37  
38   // Create the task
39   AliAnalysisTaskTOFqaID *task = new AliAnalysisTaskTOFqaID(Form("taskTOFqaID_%i",absPdgCode));
40   task->EnableAdvancedCheck(flagEnableAdvancedCheck);
41   task->EnableChargeSplit(flagEnableChargeSplit);
42   task->SetSelectMCspecies(isMC, absPdgCode);
43   task->SelectCollisionCandidates(triggerMask);
44   //AliLog::SetClassDebugLevel("AliAnalysisTaskTOFqaID",4);
45   mgr->AddTask(task);
46
47   //Define track cut set
48   AliESDtrackCuts* esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts", "TrackCutsTOFqa"); 
49   AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
50   
51   if ( (trackCutSetTOFqa<0) || (trackCutSetTOFqa>=AliAnalysisTaskTOFqaID::kNCutSetTOFqa) ) trackCutSetTOFqa = 0;
52
53   if ( trackCutSetTOFqa == AliAnalysisTaskTOFqaID::kRun1Cuts ) {
54     //use track cuts used for QA during run1 (before July 2014)
55     esdTrackCuts->SetMinNClustersTPC(70); 
56     esdTrackCuts->SetMaxChi2PerClusterTPC(4);
57     esdTrackCuts->SetAcceptKinkDaughters(kFALSE); 
58     esdTrackCuts->SetRequireTPCRefit(kTRUE);
59     esdTrackCuts->SetRequireITSRefit(kTRUE);
60     esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
61                                            AliESDtrackCuts::kAny);
62     esdTrackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");//selects primaries
63     esdTrackCuts->SetMaxDCAToVertexZ(2);
64     esdTrackCuts->SetDCAToVertex2D(kFALSE);
65     esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
66   } else {
67     if ( trackCutSetTOFqa == AliAnalysisTaskTOFqaID::kStd2010 ) esdTrackCuts->GetStandardITSTPCTrackCuts2010(kTRUE,0);
68     if ( trackCutSetTOFqa == AliAnalysisTaskTOFqaID::kStd2010crossedRows ) esdTrackCuts->GetStandardITSTPCTrackCuts2010(kTRUE,1);
69     if ( trackCutSetTOFqa == AliAnalysisTaskTOFqaID::kStd2011) esdTrackCuts->GetStandardITSTPCTrackCuts2011(kTRUE,0); 
70     if ( trackCutSetTOFqa == AliAnalysisTaskTOFqaID::kStd2011crossedRows ) esdTrackCuts->GetStandardITSTPCTrackCuts2011(kTRUE,1);
71   }
72
73   trackFilter->AddCuts(esdTrackCuts);
74   task->SetTrackFilter(trackFilter); 
75   
76   TString partName(task->GetSpeciesName(absPdgCode));
77  
78   // Create containers for input/output
79   AliAnalysisDataContainer *cInputTOFqa = mgr->CreateContainer("cInputTOFqa", TChain::Class(),AliAnalysisManager::kInputContainer);
80   AliAnalysisDataContainer *cGeneralTOFqa = mgr->CreateContainer(Form("base_%s%s",partName.Data(),cutName.Data()),TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:TOF",mgr->GetCommonFileName(), partName.Data()));
81   AliAnalysisDataContainer *cTimeZeroTOFqa = mgr->CreateContainer(Form("timeZero_%s%s",partName.Data(),cutName.Data()),TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:TOF",mgr->GetCommonFileName(),partName.Data()));
82    AliAnalysisDataContainer *cPIDTOFqa = mgr->CreateContainer(Form("pid_%s%s",partName.Data(),cutName.Data()),TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:TOF",mgr->GetCommonFileName(),partName.Data()));
83    AliAnalysisDataContainer *cTRDcheckTOFqa = mgr->CreateContainer(Form("trd_%s%s",partName.Data(),cutName.Data()),TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:TOF",mgr->GetCommonFileName(),partName.Data()));
84    AliAnalysisDataContainer *cTriggerTOFqa = mgr->CreateContainer(Form("trigger_%s%s",partName.Data(),cutName.Data()),TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:TOF",mgr->GetCommonFileName(),partName.Data()));
85
86   // Attach i/o
87   mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
88   mgr->ConnectOutput(task, 1, cGeneralTOFqa);
89   mgr->ConnectOutput(task, 2, cTimeZeroTOFqa);
90   mgr->ConnectOutput(task, 3, cPIDTOFqa);
91   mgr->ConnectOutput(task, 4, cTRDcheckTOFqa);
92   mgr->ConnectOutput(task, 5, cTriggerTOFqa);
93   return task;
94 }