Added new background scheeme, did some cleanup. added new bethe block parameters...
[u/mrichter/AliRoot.git] / PWG4 / macros / AddTaskPWG4HighPtSpectra.C
1 //DEFINITION OF A FEW CONSTANTS
2 const Double_t ptmin =  2.0 ;
3 const Double_t ptmax =  100.0 ;
4
5 const Int_t    mintrackrefsTPC = 1;
6 const Int_t    mintrackrefsITS = 1;
7 const Int_t    charge  = 1 ;
8
9 AliPWG4HighPtSpectra* AddTaskPWG4HighPtSpectra()//<some_parameters>)
10 {
11   // Creates a HighPtSpectra analysis task and adds it to the analysis manager.
12   
13   // A. Get the pointer to the existing analysis manager via the static access method.
14   //==============================================================================
15   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
16   if (!mgr) {
17     Error("AddTaskPWG4HighPtSpectra", "No analysis manager to connect to.");
18     return NULL;
19   }  
20
21   // B. Check the analysis type using the event handlers connected to the analysis
22   //    manager. The availability of MC handler can also be checked here.
23   //==============================================================================
24   if (!mgr->GetInputEventHandler()) {
25     ::Error("AddTaskHighPtSpectra", "This task requires an input event handler");
26     return NULL;
27   }  
28   TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
29   const char *analysisType = "ESD";//"TPC"
30
31   // C. Create the task, add it to manager.
32   //===========================================================================
33   //CONTAINER DEFINITION
34   Info("AliPWG4HighPtSpectra","SETUP CONTAINER");
35   //the sensitive variables, their indices
36   UInt_t ipt = 0;
37   //Setting up the container grid... 
38   UInt_t nstep = 5 ; //Steps/Modes for containers
39   Int_t kStepReconstructed = 0;
40   Int_t kStepReconstructedTPCOnly = 1;
41   Int_t kStepSecondaries = 2;
42   Int_t kStepMCtrackable = 3;
43   Int_t kStepReconstructedMC = 4;
44
45   const Int_t nvar   = 1; //number of variables on the grid:pt
46   const Int_t nbin1  = 98; //bins in pt 98 
47  
48   //arrays for the number of bins in each dimension
49   Int_t iBin[nvar];
50   iBin[0]=nbin1;
51
52   //arrays for lower bounds :
53   Double_t *binLim1=new Double_t[nbin1+1];
54
55   //values for bin lower bounds
56   for(Int_t i=0; i<=nbin1; i++) binLim1[i]=(Double_t)ptmin + (ptmax-ptmin)/nbin1*(Double_t)i ; 
57  
58   //one "container" for MC
59   AliCFContainer* container = new AliCFContainer("container","container for tracks",nstep,nvar,iBin);
60   //setting the bin limits
61   container -> SetBinLimits(ipt,binLim1);
62  
63   //CREATE THE  CUTS -----------------------------------------------
64   //Use AliESDtrackCuts
65   AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts");
66   //Standard Cuts
67   trackCuts->SetAcceptKinkDaughters(kFALSE);//
68   trackCuts->SetRequireTPCRefit(kTRUE);//
69   trackCuts->SetEtaRange(-0.9,0.9);//-0.5,0.5);//
70   trackCuts->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);//
71   trackCuts->SetPtRange(0.15, 1e10);//
72   trackCuts->SetMinNClustersTPC(50);//
73   trackCuts->SetMaxChi2PerClusterTPC(3.5);//
74   trackCuts->SetRequireITSRefit(kTRUE);
75   trackCuts->SetMaxDCAToVertexXY(2.4);
76   trackCuts->SetMaxDCAToVertexZ(3.2);
77   trackCuts->SetDCAToVertex2D(kTRUE);
78  
79   // Gen-Level kinematic cuts
80   AliCFTrackKineCuts *mcKineCuts = new AliCFTrackKineCuts("mcKineCuts","MC-level kinematic cuts");
81   mcKineCuts->SetPtRange(0.15,1e10); 
82   mcKineCuts->SetRapidityRange(-0.9,0.9);//-0.5,0.5);
83   mcKineCuts->SetRequireIsCharged(kTRUE);
84
85   //Acceptance Cuts
86   AliCFAcceptanceCuts *mcAccCuts = new AliCFAcceptanceCuts("mcAccCuts","MC acceptance cuts");
87   // mcAccCuts->SetMinNHitITS(mintrackrefsITS);
88   mcAccCuts->SetMinNHitTPC(mintrackrefsTPC);
89
90   TObjArray* recList = new TObjArray(0);
91   TObjArray* recMCList = new TObjArray(0);
92   TObjArray* recTPConlyList = new TObjArray(0);
93   TObjArray* secList = new TObjArray(0) ;
94
95   printf("CREATE MC KINE CUTS\n");
96   TObjArray* mcList = new TObjArray(0) ;
97   mcList->AddLast(mcKineCuts);
98   mcList->AddLast(mcAccCuts);
99
100   //CREATE THE INTERFACE TO CORRECTION FRAMEWORK USED IN THE TASK
101   printf("CREATE INTERFACE AND CUTS\n");
102   AliCFManager* man = new AliCFManager() ;
103   man->SetParticleContainer(container);
104   man->SetParticleCutsList(0,recList);
105   man->SetParticleCutsList(1,recTPConlyList);
106   man->SetParticleCutsList(2,secList);
107   man->SetParticleCutsList(3,mcList);
108   man->SetParticleCutsList(4,recMCList);
109
110
111   AliPWG4HighPtSpectra *taskPWG4HighPtSpectra = new AliPWG4HighPtSpectra("taskPWG4HighPtSpectra");
112   taskPWG4HighPtSpectra->SetCuts(trackCuts);
113   taskPWG4HighPtSpectra->SetCFManager(man); //here is set the CF manager
114   taskPWG4HighPtSpectra->SelectTrigger(AliAnalysisHelperJetTasks::kMB1); 
115
116   // E. Create ONLY the output containers for the data produced by the task.
117   // Get and connect other common input/output containers via the manager as below
118   //==============================================================================
119
120   //------ input data ------
121   //  AliAnalysisDataContainer *cinput0  = mgr->GetCommonInputContainer();
122 //  char *outputfile = "outputAliPWG4HighPtSpectraTestTrain.root";
123   TString outputfile = AliAnalysisManager::GetCommonFileName();
124   outputfile += ":PWG4_HighPtSpectra"; 
125   AliAnalysisDataContainer *coutput0 = mgr->CreateContainer("chist0", TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
126   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("ccontainer0", AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
127  
128   mgr->AddTask(taskPWG4HighPtSpectra);
129
130   mgr->ConnectInput(taskPWG4HighPtSpectra,0,mgr->GetCommonInputContainer());
131   mgr->ConnectOutput(taskPWG4HighPtSpectra,0,coutput0);
132   mgr->ConnectOutput(taskPWG4HighPtSpectra,1,coutput1);
133
134   // Return task pointer at the end
135   return taskPWG4HighPtSpectra;
136 }