]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/muon/AddTaskCFMuonSingle.C
Fix Coverity 24835
[u/mrichter/AliRoot.git] / PWG / muon / AddTaskCFMuonSingle.C
CommitLineData
1074989a 1AliCFMuonSingleTask1* AddTaskSingleMuonCF(Bool_t isMC=kTRUE)
2{
3 //
4 // just a template of the AddTask macros
5 // suppose we apply the cuts for same variables
6 //
7
8 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
9 if (!mgr) {
10 ::Error("AddTaskMuonHFCorrAna", "No analysis manager to connect to.");
11 return;
12 }
13 TString type = mgr->GetInputEventHandler()->GetDataType();
14 if (!type.Contains("ESD") && !type.Contains("AOD")) {
15 ::Error("AddTaskMuonHFCorrAna", "MuonsHF task needs the manager to have an ESD or AOD input handler.");
16 return;
17 }
18 if (type.Contains("ESD") && isMC && !mgr->GetMCtruthEventHandler()) {
19 AliMCEventHandler *mcHandler = new AliMCEventHandler();
20 mcHandler->SetReadTR(kTRUE);
21 mgr->SetMCtruthEventHandler(mcHandler);
22 }
23
6709e09d 24 enum { kEta, kY, kPhi, kPt, kP3, kHit, kChi2Fit, kTrM, kChi2TrM, kContrN, kVt, kVz, kTrig, kDCA, kZcoor, kRabs, kCharge, kTheta,kNVars };
25 Int_t nBins[] = { 5 , 5 , 45 , 60 ,150 , 20 , 20 , 4 , 20 , 202 , 100 , 100 , 10 , 500 , 1000, 7 , 3 , 100 };
26 Double_t min[] = { -4.,-4. ,-180., 0., 0., 0., 0., -0.5, 0., -2.5, 0., -100., 0., 0., -3000., 171., -1.5 , 2.95 };
27 Double_t max[] = {-2.5.,-2.5, 180., 30.,150., 20., 20., 3.5, 10., 199.5, 200., 100., 10., 500., 1000., 178., 1.5 , 3.15 };
1074989a 28
29 Double_t *binLimits = 0;
30 Int_t nSteps=1; if (isMC) nSteps=2;
31 AliCFContainer* contCF = new AliCFContainer("container", "", nSteps, kNVars, nBins);
32 for (Int_t var=kNVars; var--;) {
33 binLimits = new Double_t[nBins[var]+1];
34 for (Int_t i=0; i<=nBins[var]; i++) binLimits[i]=min[var]+i*(max[var]-min[var])/nBins[var];
35 contCF->SetBinLimits(var, binLimits);
36 delete [] binLimits; binLimits=0;
37 }
38
39 TList *qaList = new TList();
40 TObjArray *genList = new TObjArray(0);
41 AliCFTrackKineCuts *genKineCuts = new AliCFTrackKineCuts("genKineCuts", "GenKineCuts");
42 genKineCuts->SetPtRange(min[kPt], max[kPt]);
43 genKineCuts->SetRapidityRange(min[kY], max[kY]);
44 genKineCuts->SetQAOn(qaList);
45 genList->AddLast(genKineCuts);
46
47 TObjArray *recList = new TObjArray(0);
48 AliCFTrackKineCuts *recKineCuts = new AliCFTrackKineCuts("recKineCuts", "RecKineCuts");
49 recKineCuts->SetPtRange(min[kPt], max[kPt]);
50 recKineCuts->SetRapidityRange(min[kY], max[kY]);
51 recKineCuts->SetQAOn(qaList);
52 recList->AddLast(recKineCuts);
53
54 AliCFManager* managerCF = new AliCFManager() ;
55 managerCF->SetParticleContainer(contCF);
56 managerCF->SetParticleCutsList(AliCFManager::kPartGenCuts, genList);
57 managerCF->SetParticleCutsList(AliCFManager::kPartAccCuts, recList);
58
59 AliCFMuonSingleTask1 *taskMuonCF = new AliCFMuonSingleTask1("AliMuonSingleTask1");
60 taskMuonCF->SetCFManager(managerCF);
61 taskMuonCF->SetQAList(qaList);
62 taskMuonCF->SetUseMC(isMC);
63 mgr->AddTask(taskMuonCF);
64
65 mgr->ConnectInput(taskMuonCF, 0, mgr->GetCommonInputContainer());
66
67 char *fileName = "muonCF.root";
68 mgr->ConnectOutput(taskMuonCF,1,mgr->CreateContainer("chist",TH1I::Class(),AliAnalysisManager::kOutputContainer,fileName));
69 mgr->ConnectOutput(taskMuonCF,2,mgr->CreateContainer("ccont",AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,fileName));
70
71 return taskMuonCF;
72}