1 AliAnalysisTask *AddTask_reichelt_LMEEPbPb2011AOD(Char_t* outputFileName="LMEEoutput.root",
2 Bool_t flag1=kFALSE, Bool_t flag2=kFALSE, Bool_t getFromAlien=kFALSE,
3 Int_t triggerNames=(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral), Int_t collCands=AliVEvent::kAny)
5 Bool_t bESDANA=kFALSE; //Autodetect via InputHandler
6 //get the current analysis manager
7 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
9 Error("AddTask_reichelt_LMEEPbPb2011", "No analysis manager found.");
13 // create task and add it to the manager
14 // gSystem->AddIncludePath("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE");
16 TString configBasePath("$TRAIN_ROOT/reichelt_lowmass/");
17 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
18 if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/";
21 //Load updated macros from private ALIEN path
23 && (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/p/preichel/PWGDQ/dielectron/macrosLMEE/Config_reichelt_LMEEPbPb2011.C ."))
24 && (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/p/preichel/PWGDQ/dielectron/macrosLMEE/LMEECutLib_reichelt.C ."))
26 configBasePath=Form("%s/",gSystem->pwd());
29 TString configFile("Config_reichelt_LMEEPbPb2011.C");
30 TString configLMEECutLib("LMEECutLib_reichelt.C");
32 TString configFilePath(configBasePath+configFile);
33 TString configLMEECutLibPath(configBasePath+configLMEECutLib);
35 //AOD Usage currently tested with separate task, to be merged
36 if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){
37 ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration");
39 else if (mgr->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){
40 ::Info("AddTaskLMEEPbPb2011AOD","switching on ESD specific code");
45 //Do we have an MC handler?
46 Bool_t hasMC = (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler() != 0x0);
48 //load dielectron configuration files
49 if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data()))
50 gROOT->LoadMacro(configLMEECutLibPath.Data());
51 if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data()))
52 gROOT->LoadMacro(configFilePath.Data());
55 LMEECutLib* cutlib = new LMEECutLib();
56 AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEData");
57 if (!hasMC) task->UsePhysicsSelection();
58 task->SetTriggerMask(triggerNames);
59 task->SelectCollisionCandidates(collCands);
60 task->SetEventFilter(cutlib->GetEventCuts(LMEECutLib::kPbPb2011_TPCTOF_Semi1));
61 // Note: event cuts are identical for all analysis 'cutDefinition's that run together!
64 //add dielectron analysis with different cuts to the task
65 for (Int_t i=0; i<nDie; ++i){ //nDie defined in config file
67 AliDielectron *diel_low = Config_reichelt_LMEEPbPb2011(i,hasMC,bESDANA);
68 if(!diel_low)continue;
69 task->AddDielectron(diel_low);
70 printf("successfully added AliDielectron: %s\n",diel_low->GetName());
75 //create output container
76 AliAnalysisDataContainer *coutput1 =
77 mgr->CreateContainer("reichelt_LMEEPbPb2011_tree",
79 AliAnalysisManager::kExchangeContainer,
82 AliAnalysisDataContainer *cOutputHist1 =
83 mgr->CreateContainer("reichelt_LMEEPbPb2011_out",
85 AliAnalysisManager::kOutputContainer,
88 AliAnalysisDataContainer *cOutputHist2 =
89 mgr->CreateContainer("reichelt_LMEEPbPb2011_CF",
91 AliAnalysisManager::kOutputContainer,
94 AliAnalysisDataContainer *cOutputHist3 =
95 mgr->CreateContainer("reichelt_EventStatPbPb2011",
97 AliAnalysisManager::kOutputContainer,
100 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
101 mgr->ConnectOutput(task, 0, coutput1 );
102 mgr->ConnectOutput(task, 1, cOutputHist1);
103 mgr->ConnectOutput(task, 2, cOutputHist2);
104 mgr->ConnectOutput(task, 3, cOutputHist3);