\r
-void ConfigTaskUE(AliAnalysisTaskUE * ueana); // common config, extend with different cases\r
- \r
-AliAnalysisTaskUE *AddTaskUE()\r
+\r
+void ConfigTaskUE(AliAnalysisTaskUE * ueana ); // common config, extend with different cases\r
+void SetTrackCuts(AliAnalysisTaskUE * ueana, Char_t *ct); //can be extended\r
+void SetAnaTopology(AliAnalysisTaskUE * ueana, Char_t *at); //can be extended \r
+void SetRegionType(AliAnalysisTaskUE * ueana, Char_t *rt); //can be extended \r
+void SetSorting(AliAnalysisTaskUE * ueana, Char_t *sort);\r
+\r
+AliAnalysisTaskUE *AddTaskUE(Char_t *jetBranch = "jets",Char_t *cuts = "ALICE", Char_t *anaTopology="LJ", Char_t *regionType="TRANSV", Char_t *sortBy="MSP")\r
{\r
// Creates a jet fider task, configures it and adds it to the analysis manager.\r
\r
// Create the task and configure it.\r
//===========================================================================\r
\r
- AliAnalysisTaskUE* ueana = new AliAnalysisTaskUE("Underlying Event");\r
+ TString jb(jetBranch);\r
+ TString ct(cuts);\r
+ TString at(anaTopology);\r
+ TString rt(regionType);\r
+ TString sort(sortBy);\r
+ TString name(Form("%s_%s_%s_%s_%s",jb.Data(),ct.Data(),at.Data(),rt.Data(),sort.Data()));\r
+ \r
+ AliAnalysisTaskUE* ueana = new AliAnalysisTaskUE(Form("UEAnalysis_%s",name.Data()));\r
+ ueana->SelectAODBranch(jb.Data());\r
ConfigTaskUE(ueana);\r
+ SetTrackCuts(ueana,cuts);\r
+ SetAnaTopology(ueana,anaTopology);\r
+ SetRegionType(ueana,regionType);\r
+ SetSorting(ueana,sortBy);\r
+\r
+ if( jb.Contains("ICDF") ) { // Use internal "Charged Particle Jet CDF" instead of jets from AOD\r
+ ueana->SetUseChPartJet( kTRUE );\r
+ ueana->SetPtMinChPartJet(0.5);\r
+ }\r
+\r
+ // ***** to be fixed *******\r
+ /*\r
+ if(jb.Length()>0){\r
+ ueana->ReadDeltaAOD(kTRUE);\r
+ ueana->SelectDeltaAODBranch(jb.Data());\r
+ }\r
+ */\r
+\r
mgr->AddTask(ueana);\r
\r
// Create ONLY the output containers for the data produced by the task.\r
// Get and connect other common input/output containers via the manager as below\r
//==============================================================================\r
- AliAnalysisDataContainer *coutput1_UE = mgr->CreateContainer("histosUE", TList::Class(),AliAnalysisManager::kOutputContainer,"pwg4UE.root");\r
+ AliAnalysisDataContainer *coutput1_UE = 0;\r
+ if(jb.Length()==0)coutput1_UE = mgr->CreateContainer("histosUE", TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWG4_UE",AliAnalysisManager::GetCommonFileName()));\r
+ else coutput1_UE = mgr->CreateContainer(Form("histosUE_%s",name.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWG4_UE_%s",AliAnalysisManager::GetCommonFileName(),name.Data()));\r
\r
mgr->ConnectInput (ueana, 0, mgr->GetCommonInputContainer());\r
mgr->ConnectOutput (ueana, 0, coutput1_UE );\r
return ueana;\r
}\r
\r
-AliAnalysisTaskUE *AddTaskUE(AliAnalysisManager* mgr,AliAnalysisDataContainer *cinput)\r
-{\r
- // This is only for running on PROOF with the old root version 5-22-00 \r
- // and the older version of the AF\r
+void ConfigTaskUE(AliAnalysisTaskUE * ueana){\r
+ // common config,\r
+ ueana->SetDebugLevel(0); \r
+ ueana->SetPtRangeInHist(100, 0., 100.);\r
+}\r
\r
- // Get the pointer to the existing analysis manager via the static access method.\r
- //==============================================================================\r
- AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
- if (!mgr) {\r
- ::Error("AddTaskJets", "No analysis manager to connect to.");\r
- return NULL;\r
- } \r
- \r
- // Check the analysis type using the event handlers connected to the analysis manager.\r
- //==============================================================================\r
- if (!mgr->GetInputEventHandler()) {\r
- ::Error("AddTaskUE", "This task requires an input event handler");\r
- return NULL;\r
- }\r
+//------------------------------------------------------------------------\r
+SetTrackCuts(AliAnalysisTaskUE * ueana, Char_t *ct){\r
+ \r
+ ueana->SetFilterBit(16); // ITS refit\r
\r
- // Create the task and configure it.\r
- //===========================================================================\r
- \r
- AliAnalysisTaskUE* ueana = new AliAnalysisTaskUE("Underlying Event");\r
- ConfigTaskUE(ueana);\r
- \r
- AliAnalysisDataContainer *coutput1_UE = mgr->CreateContainer("histosUE", TList::Class(),AliAnalysisManager::kOutputContainer,"pwg4UE.root");\r
- \r
+ switch (ct) {\r
+ case "ALICE":\r
+ ueana->SetTrackPtCut(0.1);\r
+ ueana->SetTrackEtaCut(0.9);\r
+ break;\r
+ \r
+ case "CDF":\r
+ ueana->SetTrackPtCut(0.5);\r
+ ueana->SetTrackEtaCut(0.9); // meaningful only for pure MC\r
+ break;\r
\r
- mgr->ConnectInput (ueana, 0, cinput); \r
- mgr->ConnectOutput (ueana, 0, coutput1_UE );\r
- \r
- return ueana;\r
+ default:\r
+ Printf("\n >>>>>>> AddTaskUE Error Wrong Set of Track Cuts selected\n");\r
+ break;\r
+ }\r
+}\r
\r
-} \r
+//------------------------------------------------------------------------\r
+//------------------------------------------------------------------------\r
+SetAnaTopology(AliAnalysisTaskUE * ueana, Char_t *at){\r
\r
-void ConfigTaskUE(AliAnalysisTaskUE * ueana){\r
- // common config, extend with different cases\r
- Int_t anaType =1; \r
- Int_t regType =1;\r
- Double_t jetEtaCut=0.2;\r
- Double_t trackPtCut=0.5; \r
- Double_t trackEtaCut= 0.9; \r
- Double_t rad=0.7; \r
- Double_t deltaPhiCut = 2.616;\r
+ switch (at) {\r
+ case "LJ": // leading jet\r
+ ueana->SetAnaTopology(1);\r
+ ueana->SetJet1EtaCut(0.5);\r
+ break;\r
+\r
+ case "LJCC": // leading jet with charged cluster\r
+ ueana->SetAnaTopology(1);\r
+ ueana->SetJet1EtaCut(0.9); // CDF allow jet radius extend ouside |eta|<1\r
+ break;\r
+ \r
+ case "BB": // back-to-back\r
+ ueana->SetAnaTopology(2);\r
+ ueana->SetJet1EtaCut(0.5);\r
+ ueana->SetJet2DeltaPhiCut(2.616);\r
+ break;\r
+\r
+ case "BE": // back-to-back exclusive\r
+ ueana->SetAnaTopology(3);\r
+ ueana->SetJet1EtaCut(0.5);\r
+ ueana->SetJet2DeltaPhiCut(2.616);\r
+ ueana->SetJet3PtCut(10.);\r
+ break;\r
+\r
+ case "MP_eta05":\r
+ ueana->SetAnaTopology(4);\r
+ ueana->SetJet1EtaCut(0.9);\r
+ break;\r
+\r
+ case "MP_eta09": // max Pt charged particle\r
+ ueana->SetAnaTopology(4);\r
+ ueana->SetJet1EtaCut(0.9);\r
+ break;\r
+\r
+\r
+ default:\r
+ Printf("\n >>>>>>> AddTaskUE Error Wrong Analysis Topology selected\n");\r
+ break;\r
+ }\r
+\r
+}\r
+\r
+//------------------------------------------------------------------------\r
+SetRegionType(AliAnalysisTaskUE * ueana, Char_t *rt){\r
+\r
+ switch (rt) {\r
+ case "TRANSV": \r
+ ueana->SetRegionType(1); \r
+ break;\r
\r
- ueana->SetDebugLevel(10); \r
- ueana->SetPtRangeInHist(25, 0., 250.);\r
- ueana->SetAnaTopology(anaType); \r
- ueana->SetRegionType(regType); \r
- ueana->SetJet1EtaCut(jetEtaCut); \r
- ueana->SetTrackPtCut(trackPtCut); \r
- ueana->SetPtSumOrdering(2);\r
- ueana->SetConeRadius(rad); \r
- ueana->SetTrackEtaCut(trackEtaCut);\r
- ueana->SetJet2DeltaPhiCut(deltaPhiCut);\r
+ case "CONE":\r
+ ueana->SetRegionType(2); \r
+ ueana->SetConeRadius(0.4); \r
+ break;\r
+\r
+ default:\r
+ Printf("\n >>>>>>> AddTaskUE Error Wrong Region Type selected\n");\r
+ break;\r
+ }\r
+} \r
+\r
+//------------------------------------------------------------------------\r
+SetSorting(AliAnalysisTaskUE * ueana, Char_t *sort){\r
+ \r
+ switch (sort){\r
+ // Minimum zone is selected per quantity type\r
+ case "MQA":\r
+ ueana->SetPtSumOrdering(1); \r
+ break;\r
+ \r
+ // Minimum Zone is selected at the region having lowest pt summation of all tracks \r
+ case "MSP":\r
+ ueana->SetPtSumOrdering(2);\r
+ break;\r
+ \r
+ // Minimum Zone is selected at the region having lowest average pt per track\r
+ case "MAP":\r
+ ueana->SetPtSumOrdering(3);\r
+ break;\r
+ \r
+ default:\r
+ Printf("\n >>>>>>> AddTaskUE Error Wrong Sorting selected\n"); \r
+ Printf("\n >>>>>>> AddTaskUE Sort by Set to MSP \n");\r
+ ueana->SetPtSumOrdering(2);\r
+ break;\r
+ }\r
}\r