]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetSpectraMECpA.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskEmcalJetSpectraMECpA.C
1 // $Id$
2
3 AliAnalysisTaskEmcalJetSpectraMECpA* AddTaskEmcalJetSpectraMECpA(
4    const char *outfilename    = "AnalysisOutput.root",
5    const char *nRhosCh        = "rhoCh",
6    const char *nRhosChEm      = "rhoChEm",
7    const char *nRhosEm        = "rhoEm",
8    const Double_t scale       = 1.0,
9    const Double_t radius      = 0.2,
10    const Double_t minPhi      = 1.8,
11    const Double_t maxPhi      = 2.74,
12    const Double_t minEta      = -0.3,
13    const Double_t maxEta      = 0.3,
14    const char* usedTracks     = "PicoTracks",
15    const char* outClusName    = "caloClustersCorr",
16    const Double_t minTrackPt  = 0.15,
17    const Double_t minClusterPt = 0.30,
18    const char *CentEst         = "V0A",
19    const Int_t type            =1
20    )
21 {  
22   // Get the pointer to the existing analysis manager via the static access method.
23   //==============================================================================
24   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
25   if (!mgr)
26   {
27     ::Error("AddTasEmcalJetSpectraMECpA", "No analysis manager to connect to.");
28     return NULL;
29   }  
30   
31   // Check the analysis type using the event handlers connected to the analysis manager.
32   //==============================================================================
33   if (!mgr->GetInputEventHandler())
34   {
35     ::Error("AddTaskEmcalJetSpectraMECpA", "This task requires an input event handler");
36     return NULL;
37   }
38   
39   //Run the jet finder and rho tasks first
40
41   // Some constants for the jet finders
42   const Int_t cKT                 = 0;
43   const Int_t cANTIKT             = 1;
44   const Int_t cFULLJETS           = 0;
45   const Int_t cCHARGEDJETS        = 1;
46   const Int_t cNEUTRALJETS        = 2;
47
48   UInt_t typeTPC                = AliAnalysisTaskEmcal::kTPC;
49   UInt_t typeEMC                = AliAnalysisTaskEmcal::kEMCAL;
50
51     
52   float AreaCut = 0.6*radius*radius*TMath::Pi();
53
54   TF1 *sfunc=new TF1("sfunc","[0]*x*x+[1]*x+[2]",-1,100);
55   sfunc->SetParameter(0,0.0);
56   sfunc->SetParameter(1,0.0);
57   sfunc->SetParameter(2,scale);
58
59
60   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
61   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
62
63   //const char *nJets;
64   TString nJets("");
65   TString nJetsCh("");
66
67   TString scaledname(Form("%s_Scaled", nRhosCh));
68   TString newrhoname(Form("%s_All", nRhosCh));
69   //TString scaledname(Form("%s_Scaled", newrhoname));
70
71   
72   if(!(usedTracks=="")){
73     cout << "USEDTRACKS EXISTS" << usedTracks <<endl;
74     AliEmcalJetTask* jetFinderTaskChBack = AddTaskEmcalJet(usedTracks,"",cKT,radius,cCHARGEDJETS,minTrackPt, minClusterPt);
75
76     AliEmcalJetTask* jetFinderTaskChBackall = AddTaskEmcalJet(usedTracks,"",cKT,radius,cCHARGEDJETS,minTrackPt, minClusterPt,0.01,"Jets_allpt");
77     jetFinderTaskChBackall->SetMinJetPt(0);
78
79     AliEmcalJetTask* jetFinderTaskChSig = AddTaskEmcalJet(usedTracks,"",cANTIKT,radius,cCHARGEDJETS,minTrackPt, minClusterPt);
80
81     AliEmcalJetTask* jetFinderTaskChEmBack = AddTaskEmcalJet(usedTracks,outClusName,cKT,radius,cFULLJETS,minTrackPt, minClusterPt);
82     jetFinderTaskChEmBack->SetMinJetPt(0);
83
84   AliEmcalJetTask* jetFinderTask = AddTaskEmcalJet(usedTracks,outClusName,cANTIKT,radius, cFULLJETS,minTrackPt,minClusterPt);
85
86   AliAnalysisTaskRhoSparse *rhochtask = AddTaskRhoSparse(jetFinderTaskChBack->GetName(),jetFinderTaskChSig->GetName(),usedTracks,outClusName,nRhosCh,radius,typeTPC,0.01,0,0,sfunc,0,kTRUE,nRhosCh);
87   rhochtask->SetCentralityEstimator(CentEst);
88
89   AliAnalysisTaskRhoSparse *rhochalltask = AddTaskRhoSparse(jetFinderTaskChBackall->GetName(),jetFinderTaskChSig->GetName(),usedTracks,outClusName,newrhoname,radius,0,0.0,0,0,sfunc,0,kTRUE,newrhoname);
90   rhochtask->SetCentralityEstimator(CentEst);
91
92
93   AliAnalysisTaskRhoSparse *rhochemtask = AddTaskRhoSparse(jetFinderTaskChEmBack->GetName(),jetFinderTask->GetName(),usedTracks,outClusName,nRhosChEm,radius,typeEMC,0.01,0,0,0,0,kTRUE,nRhosChEm);
94   rhochemtask->SetCentralityEstimator(CentEst);
95
96   //nJets=jetFinderTask->GetName();
97   nJets+=jetFinderTask->GetName();
98   nJetsCh+=jetFinderTaskChSig->GetName();
99
100   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskDeltaPt.C");
101
102   TString deltaname(Form("DeltaPt_%s_Scaled", nRhosCh));
103   AliAnalysisTaskDeltaPt* deltapt = AddTaskDeltaPt(usedTracks,outClusName,nJets,"","","","","",scaledname,radius,1,AreaCut,minTrackPt,minClusterPt,AliAnalysisTaskEmcal::kEMCAL,deltaname);
104   deltapt->SetCentralityEstimator(CentEst);
105
106   TString chdeltaname(Form("DeltaPt_%s", nRhosCh));
107   AliAnalysisTaskDeltaPt* deltaptch = AddTaskDeltaPt(usedTracks,"",nJetsCh,"","","","","",nRhosCh,radius,1,AreaCut,minTrackPt,minClusterPt,AliAnalysisTaskEmcal::kTPC,chdeltaname);
108   deltaptch->SetCentralityEstimator(CentEst);
109
110   TString emcdeltaname(Form("DeltaPt_%s", nRhosChEm));
111   AliAnalysisTaskDeltaPt* deltaptEMC = AddTaskDeltaPt(usedTracks,outClusName,nJets,"","","","","",nRhosChEm,radius,1,AreaCut,minTrackPt,minClusterPt,AliAnalysisTaskEmcal::kEMCAL,emcdeltaname);
112   deltaptEMC->SetCentralityEstimator(CentEst);
113
114   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskScale.C");
115
116
117   Int_t radlabel=(Int_t)floor(radius*100+0.5);
118   Int_t mincluslabel=(Int_t)floor(minClusterPt*1000+0.5);
119   Int_t mintracklabel=(Int_t)floor(minTrackPt*1000+0.5);
120   TString scalename(Form("Scale_R0%d", radlabel));
121
122   AliAnalysisTaskScale* scaletask = AddTaskScale(usedTracks,outClusName,minTrackPt,minClusterPt,scalename);
123   scaletask->SetCentralityEstimator(CentEst);
124   scaletask->SetScaleFunction(sfunc);
125
126   
127   }
128
129   cout << "Running non charged jet finders..." <<endl;
130   AliEmcalJetTask* jetFinderTaskEm = AddTaskEmcalJet("",outClusName,cANTIKT,radius,cNEUTRALJETS,minTrackPt,minClusterPt);
131
132   AliEmcalJetTask* jetFinderTaskEmBack = AddTaskEmcalJet("",outClusName,cKT,radius,cNEUTRALJETS,minTrackPt, minClusterPt);
133
134   cout << "Running non charged rho task..." <<endl;
135
136   AliAnalysisTaskRhoSparse *rhoemtask = AddTaskRhoSparse(jetFinderTaskEmBack->GetName(),jetFinderTaskEm->GetName(),usedTracks,outClusName,nRhosEm,radius,0,0.01,0,0,0,1,kTRUE,nRhosEm);
137   rhoemtask->SetCentralityEstimator(CentEst);
138
139   if(usedTracks=="") nJets +=jetFinderTaskEm->GetName();
140
141
142
143
144
145   //-------------------------------------------------------
146   // Init the task and do settings
147   //-------------------------------------------------------
148
149
150   cout << "Ready to run my task..." << nJets <<endl;
151   
152   TString name(Form("SpectraMECpA_%s", nJets.Data()));
153   AliAnalysisTaskEmcalJetSpectraMECpA *spectratask = new AliAnalysisTaskEmcalJetSpectraMECpA(name);
154   spectratask->SetJetsName(nJets.Data());
155   spectratask->SetCentralityEstimator(CentEst);
156
157   if(type==0){
158     spectratask->SetAnaType(typeTPC);
159     spectratask->SetRhoName(nRhosCh);
160   }else{
161     spectratask->SetAnaType(typeEMC);
162     if(!(usedTracks=="")) spectratask->SetRhoName(scaledname);
163     else spectratask->SetRhoName(nRhosEm);
164   }
165   spectratask->SetJetPhiLimits(minPhi,maxPhi);
166   spectratask->SetJetEtaLimits(minEta,maxEta);
167   spectratask->SetJetAreaCut(AreaCut);
168   spectratask->SetTracksName(usedTracks);
169
170   //-------------------------------------------------------
171   // Final settings, pass to manager and set the containers
172   //-------------------------------------------------------
173
174
175   mgr->AddTask(spectratask);
176
177   // Create containers for input/output
178   mgr->ConnectInput (spectratask, 0, mgr->GetCommonInputContainer());
179   AliAnalysisDataContainer *cospectra = mgr->CreateContainer(name,
180                                                            TList::Class(),
181                                                            AliAnalysisManager::kOutputContainer,
182                                                            outfilename);
183   mgr->ConnectOutput(spectratask,1,cospectra);
184
185
186
187   return spectratask;
188 }