]>
Commit | Line | Data |
---|---|---|
1074989a | 1 | AliCFMuonSingleTask1* 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 | } |