]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/vertexingHF/AddTaskCF.C
Remove obsolete classes
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AddTaskCF.C
CommitLineData
32bb35a1 1//DEFINITION OF A FEW CONSTANTS
2const Double_t ymin = -2.0 ;
3const Double_t ymax = 2.0 ;
4const Double_t ptmin = 0.0 ;
5const Double_t ptmax = 10.0 ;
6const Int_t mintrackrefsTPC = 2 ;
7const Int_t mintrackrefsITS = 3 ;
8const Int_t charge = 1 ;
9const Int_t PDG = 421;
10const Int_t minclustersTPC = 50 ;
11//----------------------------------------------------
12
13AliCFHeavyFlavourTask *AddTaskCF()
14{
15
16
17 //CONTAINER DEFINITION
18 Info("AliCFHeavyFlavourTask","SETUP CONTAINER");
19 //the sensitive variables (2 in this example), their indices
20 UInt_t ipt = 0;
21 UInt_t iy = 1;
22 //Setting up the container grid...
23 UInt_t nstep = 2 ; //number of selection steps MC
24 const Int_t nvar = 2 ; //number of variables on the grid:pt,y
25 const Int_t nbin1 = 8 ; //bins in pt
26 const Int_t nbin2 = 8 ; //bins in y
27
28 //arrays for the number of bins in each dimension
29 Int_t iBin[nvar];
30 iBin[0]=nbin1;
31 iBin[1]=nbin2;
32
33 //arrays for lower bounds :
34 Double_t *binLim1=new Double_t[nbin1+1];
35 Double_t *binLim2=new Double_t[nbin2+1];
36
37 //values for bin lower bounds
38 for(Int_t i=0; i<=nbin1; i++) binLim1[i]=(Double_t)ptmin + (ptmax-ptmin)/nbin1*(Double_t)i ;
39 for(Int_t i=0; i<=nbin2; i++) binLim2[i]=(Double_t)ymin + (ymax-ymin) /nbin2*(Double_t)i ;
40
41 //one "container" for MC
42 AliCFContainer* container = new AliCFContainer("container","container for tracks",nstep,nvar,iBin);
43
44 //setting the bin limits
45 container -> SetBinLimits(ipt,binLim1);
46 container -> SetBinLimits(iy,binLim2);
47
48 //CREATE THE CUTS -----------------------------------------------
49
50 // Gen-Level kinematic cuts
51 AliCFTrackKineCuts *mcKineCuts = new AliCFTrackKineCuts("mcKineCuts","MC-level kinematic cuts");
52 // mcKineCuts->SetPtRange(ptmin,ptmax);
53 // mcKineCuts->SetRapidityRange(ymin,ymax);
54 // mcKineCuts->SetChargeMC(charge);
55
56 //Particle-Level cuts:
57 AliCFParticleGenCuts* mcGenCuts = new AliCFParticleGenCuts("mcGenCuts","MC particle generation cuts");
58 //mcGenCuts->SetRequireIsPrimary();
59 mcGenCuts->SetRequirePdgCode(PDG);
60 mcGenCuts->SetAODMC(1); //special flag for reading MC in AOD tree (important)
61
62 // Rec-Level kinematic cuts
63 AliCFTrackKineCuts *recKineCuts = new AliCFTrackKineCuts("recKineCuts","rec-level kine cuts");
64 // recKineCuts->SetPtRange(ptmin,ptmax);
65 // recKineCuts->SetRapidityRange(ymin,ymax);
66 // recKineCuts->SetChargeRec(charge);
67
68 AliCFTrackQualityCuts *recQualityCuts = new AliCFTrackQualityCuts("recQualityCuts","rec-level quality cuts");
69 //recQualityCuts->SetStatus(AliESDtrack::kITSrefit);
70
71 AliCFTrackIsPrimaryCuts *recIsPrimaryCuts = new AliCFTrackIsPrimaryCuts("recIsPrimaryCuts","rec-level isPrimary cuts");
72 //recIsPrimaryCuts->SetAODType(AliAODTrack::kPrimary);
73
74 printf("CREATE MC KINE CUTS\n");
75 TObjArray* mcList = new TObjArray(0) ;
76 mcList->AddLast(mcKineCuts);
77 mcList->AddLast(mcGenCuts);
78
79 printf("CREATE RECONSTRUCTION CUTS\n");
80 TObjArray* recList = new TObjArray(0) ;
81 recList->AddLast(recKineCuts);
82 recList->AddLast(recQualityCuts);
83 recList->AddLast(recIsPrimaryCuts);
84
85 //CREATE THE INTERFACE TO CORRECTION FRAMEWORK USED IN THE TASK
86 printf("CREATE INTERFACE AND CUTS\n");
87 AliCFManager* man = new AliCFManager() ;
88 man->SetParticleContainer (container);
89 man->SetParticleCutsList(0 , mcList); // MC
90 man->SetParticleCutsList(1 , recList); // AOD
91
92
93 // Get the pointer to the existing analysis manager via the static access method.
94 //==============================================================================
95 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
96 if (!mgr) {
97 ::Error("AddTaskCompareHF", "No analysis manager to connect to.");
98 return NULL;
99 }
100 //CREATE THE TASK
101 printf("CREATE TASK\n");
102 // create the task
103 AliCFHeavyFlavourTask *task = new AliCFHeavyFlavourTask("AliCFHeavyFlavourTask");
104 task->SetCFManager(man); //here is set the CF manager
105
106 // Create and connect containers for input/output
107
108 // ------ input data ------
109 AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
110
111 // ----- output data -----
112
113 //slot 0 : default output tree (by default handled by AliAnalysisTaskSE)
114 AliAnalysisDataContainer *coutput0 = mgr->CreateContainer("ctree0", TTree::Class(),AliAnalysisManager::kOutputContainer,"outputEta.root");
115
116 //now comes user's output objects :
117
118 // output TH1I for event counting
119 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("chist0", TH1I::Class(),AliAnalysisManager::kOutputContainer,"output.root");
120 // output Correction Framework Container (for acceptance & efficiency calculations)
121 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("ccontainer0", AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,"output.root");
122
123// cinput0->SetData(chainAOD);
124
125 mgr->AddTask(task);
126 mgr->ConnectInput(task,0,mgr->GetCommonInputContainer());
127 mgr->ConnectOutput(task,0,coutput0);
128 mgr->ConnectOutput(task,1,coutput1);
129 mgr->ConnectOutput(task,2,coutput2);
130
131 return task;
132}
133