1 void ConfigTaskCorrectionsUE(AliAnalysisTaskCorrectionsUE * uecorr ); // common config, extend with different cases
\r
2 void SetTrackCuts(AliAnalysisTaskCorrectionsUE * uecorr, Char_t *ct); //can be extended
\r
3 void SetAnaTopology(AliAnalysisTaskCorrectionsUE * uecorr, Char_t *at); //can be extended
\r
4 void SetRegionType(AliAnalysisTaskCorrectionsUE * uecorr, Char_t *rt); //can be extended
\r
5 void SetSorting(AliAnalysisTaskCorrectionsUE * uecorr, Char_t *sort);
\r
7 AliAnalysisTaskCorrectionsUE *AddTaskCorrectionsUE(Char_t *jetBranch = "jets",Char_t *cuts = "ALICE", Char_t *anaTopology="LJ", Char_t *regionType="TRANSV", Char_t *sortBy="MSP", Bool_t proof=0)
\r
10 gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/lib/tgt_linux -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/JETAN -I$ALICE_ROOT/JETAN/fastjet -I$ALICE_ROOT/PWG4 -I$ALICE_ROOT/PYTHIA6 -I$ALICE_ROOT/CORRFW");
\r
12 // Get the pointer to the existing analysis manager via the static access method.
\r
13 //==============================================================================
\r
14 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
\r
16 ::Error("AddTaskCorrectionsUE", "No analysis manager to connect to.");
\r
20 // Check the analysis type using the event handlers connected to the analysis manager.
\r
21 //==============================================================================
\r
22 if (!mgr->GetInputEventHandler()) {
\r
23 ::Error("AddTaskCorrectionsUE", "This task requires an input event handler");
\r
27 // Create the task and configure it.
\r
28 //===========================================================================
\r
30 TString jb(jetBranch);
\r
32 TString at(anaTopology);
\r
33 TString rt(regionType);
\r
34 TString sort(sortBy);
\r
35 TString name(Form("%s_%s_%s_%s_%s",jb.Data(),ct.Data(),at.Data(),rt.Data(),sort.Data()));
\r
37 AliAnalysisTaskCorrectionsUE* uecorr = new AliAnalysisTaskCorrectionsUE(Form("UECorrections_%s",name.Data()));
\r
38 uecorr->SelectAODBranch(jb.Data());
\r
39 ConfigTaskCorrectionsUE(uecorr);
\r
40 SetTrackCuts(uecorr,cuts);
\r
41 SetAnaTopology(uecorr,anaTopology);
\r
42 SetRegionType(uecorr,regionType);
\r
43 SetSorting(uecorr,sortBy);
\r
45 if( jb.Contains("ICDF") ) { // Use internal "Charged Particle Jet CDF" instead of jets from AOD
\r
46 uecorr->SetUseChPartJet( kTRUE );
\r
47 uecorr->SetPtMinChPartJet(0.5);
\r
50 // ***** to be fixed *******
\r
53 ueana->ReadDeltaAOD(kTRUE);
\r
54 ueana->SelectDeltaAODBranch(jb.Data());
\r
58 mgr->AddTask(uecorr);
\r
60 // Create ONLY the output containers for the data produced by the task.
\r
61 // Get and connect other common input/output containers via the manager as below
\r
62 //==============================================================================
\r
63 AliAnalysisDataContainer *coutput1_UE = 0;
\r
64 AliAnalysisDataContainer *coutput2_UE = 0;
\r
67 if(jb.Length()==0)coutput1_UE = mgr->CreateContainer("histosCorrectionsUE", TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWG4_CorrectionsUE",AliAnalysisManager::GetCommonFileName()));
\r
68 else coutput1_UE = mgr->CreateContainer(Form("histosCorrectionsUE_%s",name.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWG4_CorrectionsUE_%s",AliAnalysisManager::GetCommonFileName(),name.Data()));
\r
70 if(jb.Length()==0)coutput2_UE = mgr->CreateContainer("containersCorrectionsUE", AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWG4_CorrectionsUE",AliAnalysisManager::GetCommonFileName()));
\r
71 else coutput2_UE = mgr->CreateContainer(Form("containersCorrectionsUE_%s",name.Data()), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWG4_CorrectionsUE_%s",AliAnalysisManager::GetCommonFileName(),name.Data()));
\r
72 } else {//simplify output structure in case of PROOF or it crashes while transferring files from master)
\r
73 if(jb.Length()==0)coutput1_UE = mgr->CreateContainer("histosCorrectionsUE", TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s",AliAnalysisManager::GetCommonFileName()));
\r
74 else coutput1_UE = mgr->CreateContainer(Form("histosCorrectionsUE_%s",name.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s",AliAnalysisManager::GetCommonFileName()));
\r
76 if(jb.Length()==0)coutput2_UE = mgr->CreateContainer("containersCorrectionsUE", AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,Form("%s",AliAnalysisManager::GetCommonFileName()));
\r
77 else coutput2_UE = mgr->CreateContainer(Form("containersCorrectionsUE_%s",name.Data()), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,Form("%s",AliAnalysisManager::GetCommonFileName()));
\r
83 mgr->ConnectInput (uecorr, 0, mgr->GetCommonInputContainer());
\r
84 mgr->ConnectOutput (uecorr, 0, coutput1_UE );
\r
85 mgr->ConnectOutput (uecorr, 1, coutput2_UE );
\r
90 //------------------------------------------------------------------------
\r
91 void ConfigTaskCorrectionsUE(AliAnalysisTaskCorrectionsUE * uecorr){
\r
93 uecorr->SetDebugLevel(10);
\r
94 uecorr->SetPtRangeInHist(100, 0., 100.);
\r
97 //------------------------------------------------------------------------
\r
98 SetTrackCuts(AliAnalysisTaskCorrectionsUE * uecorr, Char_t *ct){
\r
100 uecorr->SetFilterBit(16); // Standard TPC+ITS cuts 2009
\r
104 uecorr->SetTrackPtCut(0.1);
\r
105 uecorr->SetTrackEtaCut(0.9);
\r
109 uecorr->SetTrackPtCut(0.5);
\r
110 uecorr->SetTrackEtaCut(0.9);
\r
114 Printf("\n >>>>>>> AddTaskCorrectionsUE Error Wrong Set of Track Cuts selected\n");
\r
119 //------------------------------------------------------------------------
\r
120 SetAnaTopology(AliAnalysisTaskCorrectionsUE * uecorr, Char_t *at){
\r
123 case "LJ": // leading jet
\r
124 uecorr->SetAnaTopology(1);
\r
125 uecorr->SetJet1EtaCut(0.5);
\r
128 case "LJCC": // leading jet with charged cluster
\r
129 uecorr->SetAnaTopology(1);
\r
130 uecorr->SetJet1EtaCut(0.9); // CDF allow jet radius extend ouside |eta|<1
\r
133 case "BB": // back-to-back
\r
134 uecorr->SetAnaTopology(2);
\r
135 uecorr->SetJet1EtaCut(0.5);
\r
136 uecorr->SetJet2DeltaPhiCut(2.616);
\r
139 case "BE": // back-to-back exclusive
\r
140 uecorr->SetAnaTopology(3);
\r
141 uecorr->SetJet1EtaCut(0.5);
\r
142 uecorr->SetJet2DeltaPhiCut(2.616);
\r
143 uecorr->SetJet3PtCut(10.);
\r
147 uecorr->SetAnaTopology(4);
\r
148 uecorr->SetJet1EtaCut(0.9);
\r
151 case "MP_eta09": // max Pt charged particle
\r
152 uecorr->SetAnaTopology(4);
\r
153 uecorr->SetJet1EtaCut(0.9);
\r
158 Printf("\n >>>>>>> AddTaskCorrectionsUE Error Wrong Analysis Topology selected\n");
\r
164 //------------------------------------------------------------------------
\r
165 SetRegionType(AliAnalysisTaskCorrectionsUE * uecorr, Char_t *rt){
\r
169 uecorr->SetRegionType(1);
\r
173 uecorr->SetRegionType(2);
\r
174 uecorr->SetConeRadius(0.4);
\r
178 Printf("\n >>>>>>> AddTaskCorrectionsUE Error Wrong Region Type selected\n");
\r
183 //------------------------------------------------------------------------
\r
184 SetSorting(AliAnalysisTaskCorrectionsUE * uecorr, Char_t *sort){
\r
187 // Minimum zone is selected per quantity type
\r
189 uecorr->SetPtSumOrdering(1);
\r
192 // Minimum Zone is selected at the region having lowest pt summation of all tracks
\r
194 uecorr->SetPtSumOrdering(2);
\r
197 // Minimum Zone is selected at the region having lowest average pt per track
\r
199 uecorr->SetPtSumOrdering(3);
\r
203 Printf("\n >>>>>>> AddTaskCorrectionsUE Error Wrong Sorting selected\n");
\r
204 Printf("\n >>>>>>> AddTaskCorrectionsUE Sort by Set to MSP \n");
\r
205 uecorr->SetPtSumOrdering(2);
\r