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