-AliAnalysisTask *AddTask_Asako_LMEEPbPb2011AODCent(Bool_t runAll=kFALSE,Bool_t setMC=kFALSE,Bool_t getFromAlien=kFALSE, Bool_t PIDbaseline=kFALSE){
-
- Bool_t bESDANA=kFALSE; //Autodetect via InputHandler
- //get the current analysis manager
- AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
- if (!mgr) {
- Error("AddTask_Asako_LMEEPbPb2011AODCent", "No analysis manager found.");
- return 0;
- }
-
-
-// create task and add it to the manager
-// gSystem->AddIncludePath("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE");
-
-
- TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/");
- TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
-
- if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/";
- // if (trainRoot.IsNull()) configBasePath= "/home/tsuji/nfs/AliceAna/aniso/v21/";
-
-
- if (getFromAlien &&
- (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/ConfigAsakoLMEEPbPb2011AOD.C .")) &&
- (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/LMEECutLibAsako.C ."))
- ) {
- configBasePath=Form("%s/",gSystem->pwd());
- }
-
- TString configFile("ConfigAsakoLMEEPbPb2011AOD.C");
- TString configLMEECutLib("LMEECutLibAsako.C");
-
- TString configFilePath(configBasePath+configFile);
- TString configLMEECutLibPath(configBasePath+configLMEECutLib);
-
- //AOD Usage currently tested with separate task, to be merged
- if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){
- ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration");
- }
- else if (mgr->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){
- ::Info("AddTaskLMEEPbPb2011AOD","switching on ESD specific code");
- bESDANA=kTRUE;
- }
-
-
- //Do we have an MC handler?
- Bool_t hasMC=setMC;
- if (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0)
- hasMC=kTRUE;
-
-
-
- if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data()))
- gROOT->LoadMacro(configLMEECutLibPath.Data());
- if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data()))
- gROOT->LoadMacro(configFilePath.Data());
-
-
- LMEECutLibAsako* cutlib = new LMEECutLibAsako();
- AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEData");
- if (!hasMC) task->UsePhysicsSelection();
- task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
-// task->SelectCollisionCandidates(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
-// task->SetRejectPileup();
- task->SelectCollisionCandidates(AliVEvent::kAny);
- task->SetEventFilter(cutlib->GetEventCuts(LMEECutLibAsako::kPbPb2011TPCandTOF)); //
-
-
- //load dielectron configuration file
-
- //add dielectron analysis with different cuts to the task
-
-
- AliDielectron *lowmass1=ConfigAsakoLMEEPbPb2011AOD(1,hasMC,bESDANA);
- task->AddDielectron(lowmass1);
- printf("add: %s\n",lowmass1->GetName());
-
- AliDielectron *lowmass5=ConfigAsakoLMEEPbPb2011AOD(5,hasMC,bESDANA);
- task->AddDielectron(lowmass5);
- printf("add: %s\n",lowmass5->GetName());
-
- // AliDielectron *lowmass6=ConfigAsakoLMEEPbPb2011AOD(6,hasMC,bESDANA);
- // task->AddDielectron(lowmass6);
- // printf("add: %s\n",lowmass6->GetName());
-
- // AliDielectron *lowmass7=ConfigAsakoLMEEPbPb2011AOD(7,hasMC,bESDANA);
- // task->AddDielectron(lowmass7);
- //printf("add: %s\n",lowmass7->GetName());
-
- // AliDielectron *lowmass8=ConfigAsakoLMEEPbPb2011AOD(8,hasMC,bESDANA);
- // task->AddDielectron(lowmass8);
- // printf("add: %s\n",lowmass8->GetName());
-
- AliDielectron *lowmass9=ConfigAsakoLMEEPbPb2011AOD(9,hasMC,bESDANA);
- task->AddDielectron(lowmass9);
- printf("add: %s\n",lowmass9->GetName());
-
- //if (PIDbaseline) {
- //AliDielectron *lowmass7=ConfigLMEEPbPb2011AOD(7,hasMC,bESDANA);
- // task->AddDielectron(lowmass7);
- // printf("add: %s\n",lowmass7->GetName());
- //}
-
- mgr->AddTask(task);
-
- //create output container
- AliAnalysisDataContainer *coutput1 =
- mgr->CreateContainer("asako_LMEEPbPb2011_tree",
- TTree::Class(),
- AliAnalysisManager::kExchangeContainer,
- "LMEEoutput.root");
-
- AliAnalysisDataContainer *cOutputHist1 =
- mgr->CreateContainer("asako_LMEEPbPb2011_out",
- TList::Class(),
- AliAnalysisManager::kOutputContainer,
- "LMEEoutput.root");
-
- /* AliAnalysisDataContainer *cOutputHist2 =
- mgr->CreateContainer("cbaumann_lowmass_CF",
- TList::Class(),
- AliAnalysisManager::kOutputContainer,
- "cbaumann_lowmass_CF.root");
- */
- AliAnalysisDataContainer *cOutputHist2 =
- mgr->CreateContainer("asako_LMEEPbPb2011_CF",
- TList::Class(),
- AliAnalysisManager::kOutputContainer,
- "LMEEoutput.root");
-
- AliAnalysisDataContainer *cOutputHist3 =
- mgr->CreateContainer("asako_EventStatPbPb2011",
- TH1D::Class(),
- AliAnalysisManager::kOutputContainer,
- "LMEEoutput.root");
-
-
- mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
- mgr->ConnectOutput(task, 0, coutput1 );
- mgr->ConnectOutput(task, 1, cOutputHist1);
- mgr->ConnectOutput(task, 2, cOutputHist2);
- mgr->ConnectOutput(task, 3, cOutputHist3);
-
- return task;
-}
-
-
+AliAnalysisTask *AddTask_Asako_LMEEPbPb2011AODCent(Bool_t runAll=kFALSE,Bool_t setMC=kFALSE,Bool_t getFromAlien=kFALSE, Bool_t PIDbaseline=kFALSE){\r
+\r
+ Bool_t bESDANA=kFALSE; //Autodetect via InputHandler\r
+ //get the current analysis manager\r
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+ if (!mgr) {\r
+ Error("AddTask_Asako_LMEEPbPb2011AODCent", "No analysis manager found.");\r
+ return 0;\r
+ }\r
+\r
+\r
+ // create task and add it to the manager\r
+ //gSystem->AddIncludePath("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE");\r
+\r
+\r
+ TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/");\r
+ TString trainRoot=gSystem->Getenv("TRAIN_ROOT");\r
+\r
+ if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/";\r
+ // if (trainRoot.IsNull()) configBasePath= "/home/tsuji/nfs/AliceAna/pol2/Cent/";\r
+ \r
+\r
+ if (getFromAlien &&\r
+ (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/ConfigAsakoLMEEPbPb2011AOD.C .")) &&\r
+ (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/LMEECutLibAsako.C ."))\r
+ ) {\r
+ configBasePath=Form("%s/",gSystem->pwd());\r
+ }\r
+\r
+ TString configFile("ConfigAsakoLMEEPbPb2011AOD.C");\r
+ TString configLMEECutLib("LMEECutLibAsako.C");\r
+\r
+ TString configFilePath(configBasePath+configFile);\r
+ TString configLMEECutLibPath(configBasePath+configLMEECutLib);\r
+\r
+ //AOD Usage currently tested with separate task, to be merged\r
+ if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){\r
+ ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration");\r
+ }\r
+ else if (mgr->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){\r
+ ::Info("AddTaskLMEEPbPb2011AOD","switching on ESD specific code");\r
+ bESDANA=kTRUE;\r
+ }\r
+\r
+\r
+ //Do we have an MC handler?\r
+ Bool_t hasMC=setMC;\r
+ if (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0)\r
+ hasMC=kTRUE;\r
+\r
+\r
+\r
+ if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data()))\r
+ gROOT->LoadMacro(configLMEECutLibPath.Data());\r
+ if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data()))\r
+ gROOT->LoadMacro(configFilePath.Data());\r
+\r
+\r
+ LMEECutLibAsako* cutlib = new LMEECutLibAsako();\r
+ AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEData");\r
+ if (!hasMC) task->UsePhysicsSelection();\r
+ task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);\r
+ // task->SelectCollisionCandidates(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);\r
+ // task->SetRejectPileup();\r
+ task->SelectCollisionCandidates(AliVEvent::kAny); \r
+ task->SetEventFilter(cutlib->GetEventCuts(LMEECutLibAsako::kPbPb2011TPCandTOF)); //\r
+ \r
+\r
+ //load dielectron configuration file\r
+\r
+ //add dielectron analysis with different cuts to the task\r
+\r
+ \r
+ AliDielectron *lowmass1=ConfigAsakoLMEEPbPb2011AOD(1,hasMC,bESDANA);\r
+ task->AddDielectron(lowmass1);\r
+ printf("add: %s\n",lowmass1->GetName());\r
+ \r
+ AliDielectron *lowmass5=ConfigAsakoLMEEPbPb2011AOD(5,hasMC,bESDANA);\r
+ task->AddDielectron(lowmass5);\r
+ printf("add: %s\n",lowmass5->GetName());\r
+ \r
+ // AliDielectron *lowmass6=ConfigAsakoLMEEPbPb2011AOD(6,hasMC,bESDANA);\r
+ // task->AddDielectron(lowmass6);\r
+ // printf("add: %s\n",lowmass6->GetName());\r
+ \r
+ // AliDielectron *lowmass7=ConfigAsakoLMEEPbPb2011AOD(7,hasMC,bESDANA);\r
+ // task->AddDielectron(lowmass7);\r
+ //printf("add: %s\n",lowmass7->GetName());\r
+ \r
+ // AliDielectron *lowmass8=ConfigAsakoLMEEPbPb2011AOD(8,hasMC,bESDANA);\r
+ // task->AddDielectron(lowmass8);\r
+ // printf("add: %s\n",lowmass8->GetName());\r
+ \r
+ AliDielectron *lowmass9=ConfigAsakoLMEEPbPb2011AOD(9,hasMC,bESDANA);\r
+ task->AddDielectron(lowmass9);\r
+ printf("add: %s\n",lowmass9->GetName());\r
+ \r
+ //if (PIDbaseline) {\r
+ //AliDielectron *lowmass7=ConfigLMEEPbPb2011AOD(7,hasMC,bESDANA);\r
+ //task->AddDielectron(lowmass7);\r
+ //printf("add: %s\n",lowmass7->GetName());\r
+ //}\r
+\r
+ mgr->AddTask(task);\r
+\r
+ //create output container\r
+ AliAnalysisDataContainer *coutput1 =\r
+ mgr->CreateContainer("asako_LMEEPbPb2011_tree",\r
+ TTree::Class(),\r
+ AliAnalysisManager::kExchangeContainer,\r
+ "LMEEoutput.root");\r
+\r
+ AliAnalysisDataContainer *cOutputHist1 =\r
+ mgr->CreateContainer("asako_LMEEPbPb2011_out",\r
+ TList::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "LMEEoutput.root");\r
+\r
+ /* AliAnalysisDataContainer *cOutputHist2 =\r
+ mgr->CreateContainer("cbaumann_lowmass_CF",\r
+ TList::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "cbaumann_lowmass_CF.root");\r
+ */\r
+ AliAnalysisDataContainer *cOutputHist2 =\r
+ mgr->CreateContainer("asako_LMEEPbPb2011_CF",\r
+ TList::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "LMEEoutput.root");\r
+\r
+ AliAnalysisDataContainer *cOutputHist3 =\r
+ mgr->CreateContainer("asako_EventStatPbPb2011",\r
+ TH1D::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "LMEEoutput.root");\r
+\r
+\r
+ mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());\r
+ mgr->ConnectOutput(task, 0, coutput1 );\r
+ mgr->ConnectOutput(task, 1, cOutputHist1);\r
+ mgr->ConnectOutput(task, 2, cOutputHist2);\r
+ mgr->ConnectOutput(task, 3, cOutputHist3);\r
+\r
+ return task;\r
+}\r
+\r
-AliAnalysisTask *AddTask_Asako_LMEEPbPb2011AODPeri(Bool_t runAll=kFALSE,Bool_t setMC=kFALSE,Bool_t getFromAlien=kFALSE, Bool_t PIDbaseline=kFALSE){
-
- Bool_t bESDANA=kFALSE; //Autodetect via InputHandler
- //get the current analysis manager
- AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
- if (!mgr) {
- Error("AddTask_Asako_LMEEPbPb2011AODPeri", "No analysis manager found.");
- return 0;
- }
-
-
-// create task and add it to the manager
-// gSystem->AddIncludePath("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE");
-
-
- TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/");
- TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
-
- if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/";
-
-
- if (getFromAlien &&
- (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/ConfigAsakoLMEEPbPb2011AOD.C .")) &&
- (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/LMEECutLibAsako.C ."))
- ) {
- configBasePath=Form("%s/",gSystem->pwd());
- }
-
- TString configFile("ConfigAsakoLMEEPbPb2011AOD.C");
- TString configLMEECutLib("LMEECutLibAsako.C");
-
- TString configFilePath(configBasePath+configFile);
- TString configLMEECutLibPath(configBasePath+configLMEECutLib);
-
- //AOD Usage currently tested with separate task, to be merged
- if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){
- ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration");
- }
- else if (mgr->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){
- ::Info("AddTaskLMEEPbPb2011AOD","switching on ESD specific code");
- bESDANA=kTRUE;
- }
-
-
- //Do we have an MC handler?
- Bool_t hasMC=setMC;
- if (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0)
- hasMC=kTRUE;
-
-
-
- if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data()))
- gROOT->LoadMacro(configLMEECutLibPath.Data());
- if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data()))
- gROOT->LoadMacro(configFilePath.Data());
-
-
- LMEECutLibAsako* cutlib = new LMEECutLibAsako();
- AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEData");
- if (!hasMC) task->UsePhysicsSelection();
- task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
-// task->SelectCollisionCandidates(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
-// task->SetRejectPileup();
- task->SelectCollisionCandidates(AliVEvent::kAny);
- task->SetEventFilter(cutlib->GetEventCuts(LMEECutLibAsako::kPbPb2011TPCandTOF)); //
-
-
- //load dielectron configuration file
-
- //add dielectron analysis with different cuts to the task
-
-
- AliDielectron *lowmass4=ConfigAsakoLMEEPbPb2011AOD(4,hasMC,bESDANA);
- task->AddDielectron(lowmass4);
- printf("add: %s\n",lowmass4->GetName());
-
- AliDielectron *lowmass8=ConfigAsakoLMEEPbPb2011AOD(8,hasMC,bESDANA);
- task->AddDielectron(lowmass8);
- printf("add: %s\n",lowmass8->GetName());
-
- AliDielectron *lowmass12=ConfigAsakoLMEEPbPb2011AOD(12,hasMC,bESDANA);
- task->AddDielectron(lowmass12);
- printf("add: %s\n",lowmass12->GetName());
-
- //if (PIDbaseline) {
- //AliDielectron *lowmass7=ConfigLMEEPbPb2011AOD(7,hasMC,bESDANA);
- // task->AddDielectron(lowmass7);
- // printf("add: %s\n",lowmass7->GetName());
- //}
-
- mgr->AddTask(task);
-
- //create output container
- AliAnalysisDataContainer *coutput1 =
- mgr->CreateContainer("asako_LMEEPbPb2011Peri_tree",
- TTree::Class(),
- AliAnalysisManager::kExchangeContainer,
- "LMEEoutput.root");
-
- AliAnalysisDataContainer *cOutputHist1 =
- mgr->CreateContainer("asako_LMEEPbPb2011Peri_out",
- TList::Class(),
- AliAnalysisManager::kOutputContainer,
- "LMEEoutput.root");
-
- /* AliAnalysisDataContainer *cOutputHist2 =
- mgr->CreateContainer("cbaumann_lowmass_CF",
- TList::Class(),
- AliAnalysisManager::kOutputContainer,
- "cbaumann_lowmass_CF.root");
- */
- AliAnalysisDataContainer *cOutputHist2 =
- mgr->CreateContainer("asako_LMEEPbPb2011Peri_CF",
- TList::Class(),
- AliAnalysisManager::kOutputContainer,
- "LMEEoutput.root");
-
- AliAnalysisDataContainer *cOutputHist3 =
- mgr->CreateContainer("asako_EventStatPbPb2011Peri",
- TH1D::Class(),
- AliAnalysisManager::kOutputContainer,
- "LMEEoutput.root");
-
-
- mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
- mgr->ConnectOutput(task, 0, coutput1 );
- mgr->ConnectOutput(task, 1, cOutputHist1);
- mgr->ConnectOutput(task, 2, cOutputHist2);
- mgr->ConnectOutput(task, 3, cOutputHist3);
-
- return task;
-}
-
-
-
+AliAnalysisTask *AddTask_Asako_LMEEPbPb2011AODPeri(Bool_t runAll=kFALSE,Bool_t setMC=kFALSE,Bool_t getFromAlien=kFALSE, Bool_t PIDbaseline=kFALSE){\r
+\r
+ Bool_t bESDANA=kFALSE; //Autodetect via InputHandler\r
+ //get the current analysis manager\r
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+ if (!mgr) {\r
+ Error("AddTask_Asako_LMEEPbPb2011AODPeri", "No analysis manager found.");\r
+ return 0;\r
+ }\r
+\r
+\r
+// create task and add it to the manager\r
+// gSystem->AddIncludePath("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE");\r
+\r
+\r
+ TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/");\r
+ TString trainRoot=gSystem->Getenv("TRAIN_ROOT");\r
+\r
+ if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/";\r
+ // if (trainRoot.IsNull()) configBasePath= "/home/tsuji/nfs/AliceAna/pol2/Cent/";\r
+ \r
+\r
+ if (getFromAlien &&\r
+ (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/ConfigAsakoLMEEPbPb2011AOD.C .")) &&\r
+ (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/LMEECutLibAsako.C ."))\r
+ ) {\r
+ configBasePath=Form("%s/",gSystem->pwd());\r
+ }\r
+\r
+ TString configFile("ConfigAsakoLMEEPbPb2011AOD.C");\r
+ TString configLMEECutLib("LMEECutLibAsako.C");\r
+\r
+ TString configFilePath(configBasePath+configFile);\r
+ TString configLMEECutLibPath(configBasePath+configLMEECutLib);\r
+\r
+ //AOD Usage currently tested with separate task, to be merged\r
+ if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){\r
+ ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration");\r
+ }\r
+ else if (mgr->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){\r
+ ::Info("AddTaskLMEEPbPb2011AOD","switching on ESD specific code");\r
+ bESDANA=kTRUE;\r
+ }\r
+\r
+\r
+ //Do we have an MC handler?\r
+ Bool_t hasMC=setMC;\r
+ if (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0)\r
+ hasMC=kTRUE;\r
+\r
+\r
+\r
+ if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data()))\r
+ gROOT->LoadMacro(configLMEECutLibPath.Data());\r
+ if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data()))\r
+ gROOT->LoadMacro(configFilePath.Data());\r
+\r
+\r
+ LMEECutLibAsako* cutlib = new LMEECutLibAsako();\r
+ AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEData");\r
+ if (!hasMC) task->UsePhysicsSelection();\r
+ task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);\r
+// task->SelectCollisionCandidates(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);\r
+// task->SetRejectPileup();\r
+ task->SelectCollisionCandidates(AliVEvent::kAny); \r
+ task->SetEventFilter(cutlib->GetEventCuts(LMEECutLibAsako::kPbPb2011TPCandTOF)); //\r
+ \r
+\r
+ //load dielectron configuration file\r
+\r
+ //add dielectron analysis with different cuts to the task\r
+\r
+ \r
+ AliDielectron *lowmass4=ConfigAsakoLMEEPbPb2011AOD(4,hasMC,bESDANA);\r
+ task->AddDielectron(lowmass4);\r
+ printf("add: %s\n",lowmass4->GetName());\r
+ \r
+ AliDielectron *lowmass8=ConfigAsakoLMEEPbPb2011AOD(8,hasMC,bESDANA);\r
+ task->AddDielectron(lowmass8);\r
+ printf("add: %s\n",lowmass8->GetName());\r
+ \r
+ AliDielectron *lowmass12=ConfigAsakoLMEEPbPb2011AOD(12,hasMC,bESDANA);\r
+ task->AddDielectron(lowmass12);\r
+ printf("add: %s\n",lowmass12->GetName());\r
+ \r
+ //if (PIDbaseline) {\r
+ //AliDielectron *lowmass7=ConfigLMEEPbPb2011AOD(7,hasMC,bESDANA);\r
+ // task->AddDielectron(lowmass7);\r
+ // printf("add: %s\n",lowmass7->GetName());\r
+ //}\r
+\r
+ mgr->AddTask(task);\r
+\r
+ //create output container\r
+ AliAnalysisDataContainer *coutput1 =\r
+ mgr->CreateContainer("asako_LMEEPbPb2011Peri_tree",\r
+ TTree::Class(),\r
+ AliAnalysisManager::kExchangeContainer,\r
+ "LMEEoutput.root");\r
+\r
+ AliAnalysisDataContainer *cOutputHist1 =\r
+ mgr->CreateContainer("asako_LMEEPbPb2011Peri_out",\r
+ TList::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "LMEEoutput.root");\r
+\r
+ /* AliAnalysisDataContainer *cOutputHist2 =\r
+ mgr->CreateContainer("cbaumann_lowmass_CF",\r
+ TList::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "cbaumann_lowmass_CF.root");\r
+ */\r
+ AliAnalysisDataContainer *cOutputHist2 =\r
+ mgr->CreateContainer("asako_LMEEPbPb2011Peri_CF",\r
+ TList::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "LMEEoutput.root");\r
+\r
+ AliAnalysisDataContainer *cOutputHist3 =\r
+ mgr->CreateContainer("asako_EventStatPbPb2011Peri",\r
+ TH1D::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "LMEEoutput.root");\r
+\r
+\r
+ mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());\r
+ mgr->ConnectOutput(task, 0, coutput1 );\r
+ mgr->ConnectOutput(task, 1, cOutputHist1);\r
+ mgr->ConnectOutput(task, 2, cOutputHist2);\r
+ mgr->ConnectOutput(task, 3, cOutputHist3);\r
+\r
+ return task;\r
+}\r
-AliAnalysisTask *AddTask_Asako_LMEEPbPb2011AODSemi1(Bool_t runAll=kFALSE,Bool_t setMC=kFALSE,Bool_t getFromAlien=kFALSE, Bool_t PIDbaseline=kFALSE){
-
- Bool_t bESDANA=kFALSE; //Autodetect via InputHandler
- //get the current analysis manager
- AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
- if (!mgr) {
- Error("AddTask_Asako_LMEEPbPb2011AODSemi1", "No analysis manager found.");
- return 0;
- }
-
-
-// create task and add it to the manager
-// gSystem->AddIncludePath("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE");
-
-
- TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/");
- TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
-
- if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/";
-
-
- if (getFromAlien &&
- (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/ConfigAsakoLMEEPbPb2011AOD.C .")) &&
- (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/LMEECutLibAsako.C ."))
- ) {
- configBasePath=Form("%s/",gSystem->pwd());
- }
-
- TString configFile("ConfigAsakoLMEEPbPb2011AOD.C");
- TString configLMEECutLib("LMEECutLibAsako.C");
-
- TString configFilePath(configBasePath+configFile);
- TString configLMEECutLibPath(configBasePath+configLMEECutLib);
-
- //AOD Usage currently tested with separate task, to be merged
- if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){
- ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration");
- }
- else if (mgr->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){
- ::Info("AddTaskLMEEPbPb2011AOD","switching on ESD specific code");
- bESDANA=kTRUE;
- }
-
-
- //Do we have an MC handler?
- Bool_t hasMC=setMC;
- if (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0)
- hasMC=kTRUE;
-
-
-
- if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data()))
- gROOT->LoadMacro(configLMEECutLibPath.Data());
- if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data()))
- gROOT->LoadMacro(configFilePath.Data());
-
-
- LMEECutLibAsako* cutlib = new LMEECutLibAsako();
- AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEData");
- if (!hasMC) task->UsePhysicsSelection();
- task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
-// task->SelectCollisionCandidates(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
-// task->SetRejectPileup();
- task->SelectCollisionCandidates(AliVEvent::kAny);
- task->SetEventFilter(cutlib->GetEventCuts(LMEECutLibAsako::kPbPb2011TPCandTOF)); //
-
-
- //load dielectron configuration file
-
- //add dielectron analysis with different cuts to the task
-
-
- AliDielectron *lowmass2=ConfigAsakoLMEEPbPb2011AOD(2,hasMC,bESDANA);
- task->AddDielectron(lowmass2);
- printf("add: %s\n",lowmass2->GetName());
-
- AliDielectron *lowmass6=ConfigAsakoLMEEPbPb2011AOD(6,hasMC,bESDANA);
- task->AddDielectron(lowmass6);
- printf("add: %s\n",lowmass6->GetName());
-
-
- AliDielectron *lowmass10=ConfigAsakoLMEEPbPb2011AOD(10,hasMC,bESDANA);
- task->AddDielectron(lowmass10);
- printf("add: %s\n",lowmass10->GetName());
-
-
- mgr->AddTask(task);
-
- //create output container
- AliAnalysisDataContainer *coutput1 =
- mgr->CreateContainer("asako_LMEEPbPb2011Semi1_tree",
- TTree::Class(),
- AliAnalysisManager::kExchangeContainer,
- "LMEEoutput.root");
-
- AliAnalysisDataContainer *cOutputHist1 =
- mgr->CreateContainer("asako_LMEEPbPb2011Semi1_out",
- TList::Class(),
- AliAnalysisManager::kOutputContainer,
- "LMEEoutput.root");
-
- /* AliAnalysisDataContainer *cOutputHist2 =
- mgr->CreateContainer("cbaumann_lowmass_CF",
- TList::Class(),
- AliAnalysisManager::kOutputContainer,
- "cbaumann_lowmass_CF.root");
- */
- AliAnalysisDataContainer *cOutputHist2 =
- mgr->CreateContainer("asako_LMEEPbPb2011Semi1_CF",
- TList::Class(),
- AliAnalysisManager::kOutputContainer,
- "LMEEoutput.root");
-
- AliAnalysisDataContainer *cOutputHist3 =
- mgr->CreateContainer("asako_EventStatPbPb2011Semi1",
- TH1D::Class(),
- AliAnalysisManager::kOutputContainer,
- "LMEEoutput.root");
-
-
- mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
- mgr->ConnectOutput(task, 0, coutput1 );
- mgr->ConnectOutput(task, 1, cOutputHist1);
- mgr->ConnectOutput(task, 2, cOutputHist2);
- mgr->ConnectOutput(task, 3, cOutputHist3);
-
- return task;
-}
-
-
-
+AliAnalysisTask *AddTask_Asako_LMEEPbPb2011AODSemi1(Bool_t runAll=kFALSE,Bool_t setMC=kFALSE,Bool_t getFromAlien=kFALSE, Bool_t PIDbaseline=kFALSE){\r
+\r
+ Bool_t bESDANA=kFALSE; //Autodetect via InputHandler\r
+ //get the current analysis manager\r
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+ if (!mgr) {\r
+ Error("AddTask_Asako_LMEEPbPb2011AODSemi1", "No analysis manager found.");\r
+ return 0;\r
+ }\r
+\r
+\r
+// create task and add it to the manager\r
+// gSystem->AddIncludePath("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE");\r
+\r
+\r
+ TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/");\r
+ TString trainRoot=gSystem->Getenv("TRAIN_ROOT");\r
+\r
+ if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/";\r
+ // if (trainRoot.IsNull()) configBasePath= "/home/tsuji/nfs/AliceAna/pol2/Semi1/";\r
+\r
+ if (getFromAlien &&\r
+ (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/ConfigAsakoLMEEPbPb2011AOD.C .")) &&\r
+ (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/LMEECutLibAsako.C ."))\r
+ ) {\r
+ configBasePath=Form("%s/",gSystem->pwd());\r
+ }\r
+\r
+ TString configFile("ConfigAsakoLMEEPbPb2011AOD.C");\r
+ TString configLMEECutLib("LMEECutLibAsako.C");\r
+\r
+ TString configFilePath(configBasePath+configFile);\r
+ TString configLMEECutLibPath(configBasePath+configLMEECutLib);\r
+\r
+ //AOD Usage currently tested with separate task, to be merged\r
+ if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){\r
+ ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration");\r
+ }\r
+ else if (mgr->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){\r
+ ::Info("AddTaskLMEEPbPb2011AOD","switching on ESD specific code");\r
+ bESDANA=kTRUE;\r
+ }\r
+\r
+\r
+ //Do we have an MC handler?\r
+ Bool_t hasMC=setMC;\r
+ if (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0)\r
+ hasMC=kTRUE;\r
+\r
+\r
+\r
+ if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data()))\r
+ gROOT->LoadMacro(configLMEECutLibPath.Data());\r
+ if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data()))\r
+ gROOT->LoadMacro(configFilePath.Data());\r
+\r
+\r
+ LMEECutLibAsako* cutlib = new LMEECutLibAsako();\r
+ AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEData");\r
+ if (!hasMC) task->UsePhysicsSelection();\r
+ task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);\r
+// task->SelectCollisionCandidates(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);\r
+// task->SetRejectPileup();\r
+ task->SelectCollisionCandidates(AliVEvent::kAny); \r
+ task->SetEventFilter(cutlib->GetEventCuts(LMEECutLibAsako::kPbPb2011TPCandTOF)); //\r
+ \r
+\r
+ //load dielectron configuration file\r
+\r
+ //add dielectron analysis with different cuts to the task\r
+\r
+ \r
+ AliDielectron *lowmass2=ConfigAsakoLMEEPbPb2011AOD(2,hasMC,bESDANA);\r
+ task->AddDielectron(lowmass2);\r
+ printf("add: %s\n",lowmass2->GetName());\r
+ \r
+ AliDielectron *lowmass6=ConfigAsakoLMEEPbPb2011AOD(6,hasMC,bESDANA);\r
+ task->AddDielectron(lowmass6);\r
+ printf("add: %s\n",lowmass6->GetName());\r
+ \r
+ \r
+ AliDielectron *lowmass10=ConfigAsakoLMEEPbPb2011AOD(10,hasMC,bESDANA);\r
+ task->AddDielectron(lowmass10);\r
+ printf("add: %s\n",lowmass10->GetName());\r
+ \r
+\r
+ mgr->AddTask(task);\r
+\r
+ //create output container\r
+ AliAnalysisDataContainer *coutput1 =\r
+ mgr->CreateContainer("asako_LMEEPbPb2011Semi1_tree",\r
+ TTree::Class(),\r
+ AliAnalysisManager::kExchangeContainer,\r
+ "LMEEoutput.root");\r
+\r
+ AliAnalysisDataContainer *cOutputHist1 =\r
+ mgr->CreateContainer("asako_LMEEPbPb2011Semi1_out",\r
+ TList::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "LMEEoutput.root");\r
+\r
+ /* AliAnalysisDataContainer *cOutputHist2 =\r
+ mgr->CreateContainer("cbaumann_lowmass_CF",\r
+ TList::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "cbaumann_lowmass_CF.root");\r
+ */\r
+ AliAnalysisDataContainer *cOutputHist2 =\r
+ mgr->CreateContainer("asako_LMEEPbPb2011Semi1_CF",\r
+ TList::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "LMEEoutput.root");\r
+\r
+ AliAnalysisDataContainer *cOutputHist3 =\r
+ mgr->CreateContainer("asako_EventStatPbPb2011Semi1",\r
+ TH1D::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "LMEEoutput.root");\r
+\r
+\r
+ mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());\r
+ mgr->ConnectOutput(task, 0, coutput1 );\r
+ mgr->ConnectOutput(task, 1, cOutputHist1);\r
+ mgr->ConnectOutput(task, 2, cOutputHist2);\r
+ mgr->ConnectOutput(task, 3, cOutputHist3);\r
+\r
+ return task;\r
+}\r
-AliAnalysisTask *AddTask_Asako_LMEEPbPb2011AODSemi2(Bool_t runAll=kFALSE,Bool_t setMC=kFALSE,Bool_t getFromAlien=kFALSE, Bool_t PIDbaseline=kFALSE){
-
- Bool_t bESDANA=kFALSE; //Autodetect via InputHandler
- //get the current analysis manager
- AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
- if (!mgr) {
- Error("AddTask_Asako_LMEEPbPb2011AODSemi2", "No analysis manager found.");
- return 0;
- }
-
-
-// create task and add it to the manager
-// gSystem->AddIncludePath("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE");
-
-
- TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/");
- TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
-
- if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/";
-
-
-
- if (getFromAlien &&
- (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/ConfigAsakoLMEEPbPb2011AOD.C .")) &&
- (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/LMEECutLibAsako.C ."))
- ) {
- configBasePath=Form("%s/",gSystem->pwd());
- }
-
- TString configFile("ConfigAsakoLMEEPbPb2011AOD.C");
- TString configLMEECutLib("LMEECutLibAsako.C");
-
- TString configFilePath(configBasePath+configFile);
- TString configLMEECutLibPath(configBasePath+configLMEECutLib);
-
- //AOD Usage currently tested with separate task, to be merged
- if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){
- ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration");
- }
- else if (mgr->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){
- ::Info("AddTaskLMEEPbPb2011AOD","switching on ESD specific code");
- bESDANA=kTRUE;
- }
-
-
- //Do we have an MC handler?
- Bool_t hasMC=setMC;
- if (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0)
- hasMC=kTRUE;
-
-
-
- if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data()))
- gROOT->LoadMacro(configLMEECutLibPath.Data());
- if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data()))
- gROOT->LoadMacro(configFilePath.Data());
-
-
- LMEECutLibAsako* cutlib = new LMEECutLibAsako();
- AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEData");
- if (!hasMC) task->UsePhysicsSelection();
- task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
-// task->SelectCollisionCandidates(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
-// task->SetRejectPileup();
- task->SelectCollisionCandidates(AliVEvent::kAny);
- task->SetEventFilter(cutlib->GetEventCuts(LMEECutLibAsako::kPbPb2011TPCandTOF)); //
-
-
- //load dielectron configuration file
-
- //add dielectron analysis with different cuts to the task
-
-
- AliDielectron *lowmass3=ConfigAsakoLMEEPbPb2011AOD(3,hasMC,bESDANA);
- task->AddDielectron(lowmass3);
- printf("add: %s\n",lowmass3->GetName());
-
- AliDielectron *lowmass7=ConfigAsakoLMEEPbPb2011AOD(7,hasMC,bESDANA);
- task->AddDielectron(lowmass7);
- printf("add: %s\n",lowmass7->GetName());
-
-
- AliDielectron *lowmass11=ConfigAsakoLMEEPbPb2011AOD(11,hasMC,bESDANA);
- task->AddDielectron(lowmass11);
- printf("add: %s\n",lowmass11->GetName());
-
-
- mgr->AddTask(task);
-
- //create output container
- AliAnalysisDataContainer *coutput1 =
- mgr->CreateContainer("asako_LMEEPbPb2011Semi2_tree",
- TTree::Class(),
- AliAnalysisManager::kExchangeContainer,
- "LMEEoutput.root");
-
- AliAnalysisDataContainer *cOutputHist1 =
- mgr->CreateContainer("asako_LMEEPbPb2011Semi2_out",
- TList::Class(),
- AliAnalysisManager::kOutputContainer,
- "LMEEoutput.root");
-
- /* AliAnalysisDataContainer *cOutputHist2 =
- mgr->CreateContainer("cbaumann_lowmass_CF",
- TList::Class(),
- AliAnalysisManager::kOutputContainer,
- "cbaumann_lowmass_CF.root");
- */
- AliAnalysisDataContainer *cOutputHist2 =
- mgr->CreateContainer("asako_LMEEPbPb2011Semi2_CF",
- TList::Class(),
- AliAnalysisManager::kOutputContainer,
- "LMEEoutput.root");
-
- AliAnalysisDataContainer *cOutputHist3 =
- mgr->CreateContainer("asako_EventStatPbPb2011Semi2",
- TH1D::Class(),
- AliAnalysisManager::kOutputContainer,
- "LMEEoutput.root");
-
-
- mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
- mgr->ConnectOutput(task, 0, coutput1 );
- mgr->ConnectOutput(task, 1, cOutputHist1);
- mgr->ConnectOutput(task, 2, cOutputHist2);
- mgr->ConnectOutput(task, 3, cOutputHist3);
-
- return task;
-}
-
-
-
-
+AliAnalysisTask *AddTask_Asako_LMEEPbPb2011AODSemi2(Bool_t runAll=kFALSE,Bool_t setMC=kFALSE,Bool_t getFromAlien=kFALSE, Bool_t PIDbaseline=kFALSE){\r
+\r
+ Bool_t bESDANA=kFALSE; //Autodetect via InputHandler\r
+ //get the current analysis manager\r
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+ if (!mgr) {\r
+ Error("AddTask_Asako_LMEEPbPb2011AODSemi2", "No analysis manager found.");\r
+ return 0;\r
+ }\r
+\r
+\r
+// create task and add it to the manager\r
+// gSystem->AddIncludePath("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE");\r
+\r
+\r
+ TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/");\r
+ TString trainRoot=gSystem->Getenv("TRAIN_ROOT");\r
+\r
+ if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/";\r
+ // if (trainRoot.IsNull()) configBasePath= "/home/tsuji/nfs/AliceAna/pol2/Cent/";\r
+\r
+\r
+ if (getFromAlien &&\r
+ (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/ConfigAsakoLMEEPbPb2011AOD.C .")) &&\r
+ (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/LMEECutLibAsako.C ."))\r
+ ) {\r
+ configBasePath=Form("%s/",gSystem->pwd());\r
+ }\r
+\r
+ TString configFile("ConfigAsakoLMEEPbPb2011AOD.C");\r
+ TString configLMEECutLib("LMEECutLibAsako.C");\r
+\r
+ TString configFilePath(configBasePath+configFile);\r
+ TString configLMEECutLibPath(configBasePath+configLMEECutLib);\r
+\r
+ //AOD Usage currently tested with separate task, to be merged\r
+ if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){\r
+ ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration");\r
+ }\r
+ else if (mgr->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){\r
+ ::Info("AddTaskLMEEPbPb2011AOD","switching on ESD specific code");\r
+ bESDANA=kTRUE;\r
+ }\r
+\r
+\r
+ //Do we have an MC handler?\r
+ Bool_t hasMC=setMC;\r
+ if (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0)\r
+ hasMC=kTRUE;\r
+\r
+\r
+\r
+ if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data()))\r
+ gROOT->LoadMacro(configLMEECutLibPath.Data());\r
+ if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data()))\r
+ gROOT->LoadMacro(configFilePath.Data());\r
+\r
+\r
+ LMEECutLibAsako* cutlib = new LMEECutLibAsako();\r
+ AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEData");\r
+ if (!hasMC) task->UsePhysicsSelection();\r
+ task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);\r
+// task->SelectCollisionCandidates(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);\r
+// task->SetRejectPileup();\r
+ task->SelectCollisionCandidates(AliVEvent::kAny); \r
+ task->SetEventFilter(cutlib->GetEventCuts(LMEECutLibAsako::kPbPb2011TPCandTOF)); //\r
+ \r
+\r
+ //load dielectron configuration file\r
+\r
+ //add dielectron analysis with different cuts to the task\r
+\r
+ \r
+ AliDielectron *lowmass3=ConfigAsakoLMEEPbPb2011AOD(3,hasMC,bESDANA);\r
+ task->AddDielectron(lowmass3);\r
+ printf("add: %s\n",lowmass3->GetName());\r
+ \r
+ AliDielectron *lowmass7=ConfigAsakoLMEEPbPb2011AOD(7,hasMC,bESDANA);\r
+ task->AddDielectron(lowmass7);\r
+ printf("add: %s\n",lowmass7->GetName());\r
+ \r
+ \r
+ AliDielectron *lowmass11=ConfigAsakoLMEEPbPb2011AOD(11,hasMC,bESDANA);\r
+ task->AddDielectron(lowmass11);\r
+ printf("add: %s\n",lowmass11->GetName());\r
+ \r
+\r
+ mgr->AddTask(task);\r
+\r
+ //create output container\r
+ AliAnalysisDataContainer *coutput1 =\r
+ mgr->CreateContainer("asako_LMEEPbPb2011Semi2_tree",\r
+ TTree::Class(),\r
+ AliAnalysisManager::kExchangeContainer,\r
+ "LMEEoutput.root");\r
+\r
+ AliAnalysisDataContainer *cOutputHist1 =\r
+ mgr->CreateContainer("asako_LMEEPbPb2011Semi2_out",\r
+ TList::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "LMEEoutput.root");\r
+\r
+ /* AliAnalysisDataContainer *cOutputHist2 =\r
+ mgr->CreateContainer("cbaumann_lowmass_CF",\r
+ TList::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "cbaumann_lowmass_CF.root");\r
+ */\r
+ AliAnalysisDataContainer *cOutputHist2 =\r
+ mgr->CreateContainer("asako_LMEEPbPb2011Semi2_CF",\r
+ TList::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "LMEEoutput.root");\r
+\r
+ AliAnalysisDataContainer *cOutputHist3 =\r
+ mgr->CreateContainer("asako_EventStatPbPb2011Semi2",\r
+ TH1D::Class(),\r
+ AliAnalysisManager::kOutputContainer,\r
+ "LMEEoutput.root");\r
+\r
+\r
+ mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());\r
+ mgr->ConnectOutput(task, 0, coutput1 );\r
+ mgr->ConnectOutput(task, 1, cOutputHist1);\r
+ mgr->ConnectOutput(task, 2, cOutputHist2);\r
+ mgr->ConnectOutput(task, 3, cOutputHist3);\r
+\r
+ return task;\r
+}\r
-//#include "PWGDQ/dielectron/macrosLMEE/LMEECutLib.C"
-
-void InitHistograms(AliDielectron *die, Int_t cutDefinition);
-void InitCF(AliDielectron* die, Int_t cutDefinition);
-void EnableMC();
-
-TString names=("noPairing;TPCTOFCentwidenoRej;TPCTOFSemiCent1noRej;TPCTOFSemiCent2noRej;TPCTOFPerinoRej;TPCTOFCentRP;TPCTOFSemiCent1RP;TPCTOFSemiCent2RP;TPCTOFPeriRP;TPCTOFCentMag;TPCTOFSemiCent1Mag;TPCTOFSemiCent2Mag;TPCTOFPeriMag;TPCTOFCentnoTOF;NoPIDNoPairing;TPCTOFCentnoRej");
-TObjArray *arrNames=names.Tokenize(";");
-const Int_t nDie=arrNames->GetEntries();
-
-Bool_t MCenabled=kFALSE;
-
-
-AliDielectron* ConfigAsakoLMEEPbPb2011AOD(Int_t cutDefinition, Bool_t hasMC=kFALSE, Bool_t ESDanalysis=kFALSE)
-{
-
- Int_t selectedPID=-1;
- Int_t selectedCentrality=-1;
- Int_t selectedPairCut=-1;
- // Int_t selectedPairMCut=-1;
- Bool_t rejectionStep=kFALSE;
- Bool_t PairCut=kFALSE; //add by asako
- LMEECutLibAsako* LMCL = new LMEECutLibAsako();
-
- //
- // Setup the instance of AliDielectron
- //
-
- MCenabled=hasMC;
- // create the actual framework object
-
- TString name=Form("%02d",cutDefinition);
- if ((cutDefinition)<arrNames->GetEntriesFast()){
- name=arrNames->At((cutDefinition))->GetName();
- }
-
- //thisCut only relevant for MC:
- AliDielectron *die =
- new AliDielectron(Form
- ("%s",name.Data()),
- Form("Track cuts: %s",name.Data()));
-
-
- //Setup AnalysisSelection:
- if (cutDefinition==0) {
- //not yet implemented
- }
- else if (cutDefinition==1) {
- selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;
- selectedCentrality = LMEECutLibAsako::kPbPb2011Central;
- rejectionStep = kFALSE;
- PairCut = kFALSE;
-
- }
- else if (cutDefinition==2) {
- selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;
- selectedCentrality = LMEECutLibAsako::kPbPb2011SemiCentral1;
- rejectionStep = kFALSE;
- PairCut=kFALSE;
- }
- else if (cutDefinition==3) {
- selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;
- selectedCentrality = LMEECutLibAsako::kPbPb2011SemiCentral2;
- rejectionStep = kFALSE;
- PairCut=kFALSE;
- }
-
- else if (cutDefinition==4) {
- selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;
- selectedCentrality = LMEECutLibAsako::kPbPb2011Peripheral;
- rejectionStep = kFALSE;
- PairCut=kFALSE;
- }
-
- ///////////////////////////////////////////////////////////
- else if (cutDefinition==5) {
- selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;
- selectedCentrality = LMEECutLibAsako::kPbPb2011Central;
- selectedPairCut = LMEECutLibAsako::kPbPb2011RP;
- //selectedPairMCut = LMEECutLibAsako::kPbPb2011MassAll;
- rejectionStep = kFALSE;
- PairCut=kTRUE;
- }
- else if (cutDefinition==6) {
- selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;
- selectedCentrality = LMEECutLibAsako::kPbPb2011SemiCentral1;
- selectedPairCut = LMEECutLibAsako::kPbPb2011RP;
- // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassMiddle;
- rejectionStep = kFALSE;
- PairCut=kTRUE;
- }
- else if (cutDefinition==7) {
- selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;
- selectedCentrality = LMEECutLibAsako::kPbPb2011SemiCentral2;
- // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassMiddle;
- selectedPairCut = LMEECutLibAsako::kPbPb2011RP;
- rejectionStep = kFALSE;
- PairCut=kTRUE;
- }
- else if (cutDefinition==8) {
- selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;
- selectedCentrality = LMEECutLibAsako::kPbPb2011Peripheral;
- selectedPairCut = LMEECutLibAsako::kPbPb2011RP;
- // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassMiddle;
- rejectionStep = kFALSE;
- PairCut=kTRUE;
- }
-
- /////////////////////////////////////////////////////////
- else if (cutDefinition==9) {
- selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;
- selectedCentrality = LMEECutLibAsako::kPbPb2011Central;
- selectedPairCut = LMEECutLibAsako::kPbPb2011Mag;
- // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassAll;
- rejectionStep = kFALSE;
- PairCut=kTRUE;
- }
-
- else if (cutDefinition==10) {
- selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;
- selectedCentrality = LMEECutLibAsako::kPbPb2011SemiCentral1;
- selectedPairCut = LMEECutLibAsako::kPbPb2011Mag;
- // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassMiddle;
- rejectionStep = kFALSE;
- PairCut=kTRUE;
- }
- else if (cutDefinition==11) {
- selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;
- selectedCentrality = LMEECutLibAsako::kPbPb2011SemiCentral2;
- // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassMiddle;
- selectedPairCut = LMEECutLibAsako::kPbPb2011Mag;
- rejectionStep = kFALSE;
- PairCut=kTRUE;
- }
- else if (cutDefinition==12) {
- selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;
- selectedCentrality = LMEECutLibAsako::kPbPb2011Peripheral;
- selectedPairCut = LMEECutLibAsako::kPbPb2011Mag;
- // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassMiddle;
- rejectionStep = kFALSE;
- PairCut=kTRUE;
- }
-
-
-
- ///////////////////////////////////////////////////////
- else if (cutDefinition==13) {
- //selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
- selectedPID = LMEECutLibAsako::kPbPb2011TPC;
- selectedCentrality = LMEECutLibAsako::kPbPb2011Central;
- rejectionStep = kFALSE;
- PairCut=kFALSE;
- }
- else if (cutDefinition==14) {
- selectedPID = LMEECutLibAsako::kPbPb2011NoPID;
- selectedCentrality = LMEECutLibAsako::kPbPb2011Central;
- rejectionStep = kFALSE;
- PairCut=kFALSE;
- }
-
- else if (cutDefinition==15) {
- selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOF;
- selectedCentrality = LMEECutLibAsako::kPbPb2011Central;
- rejectionStep = kFALSE;
- PairCut = kFALSE;
- }
-
-
- else Semi{
- cout << " =============================== " << endl;
- cout << " ==== INVALID CONFIGURATION ==== " << endl;
- cout << " =============================== " << endl;
- }
-
-
- //Now configure task
-
- //Apply correct Pre-Filter Scheme, if necessary
- die->SetPreFilterAllSigns();
-
- //switch off KF PArticle:
- die->SetUseKF(kFALSE);
-
- if (selectedPID == LMEECutLibAsako::kPbPb2011NoPID) {
- die->SetNoPairing();
- }
-
- // if (ESDanalysis) {
- //die->GetTrackFilter().AddCuts( LMCL->GetESDTrackCutsAna(selectedPID) );
- // }
-
- die->GetEventFilter().AddCuts(LMCL->GetCentralityCuts(selectedCentrality));
- die->GetTrackFilter().AddCuts( LMCL->GetTrackCutsAna(selectedPID) );
- die->GetTrackFilter().AddCuts( LMCL->GetPIDCutsAna(selectedPID) );
-
- if(PairCut){
- if (rejectionStep) {
- die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) );
- die->GetPairPreFilter().AddCuts( LMCL->GetPairPreFilterCuts(selectedPairCut));
- die->GetPairFilter().AddCuts( LMCL->GetPairCuts(selectedPairCut));
- }
- else {
- die->GetPairFilter().AddCuts( LMCL->GetPairCutsInOut(selectedPairCut));
- // die->GetPairFilter().AddCuts( LMCL->GetPairCuts4(selectedPairMCut));
- }
- }
-
-
-
-
- AliDielectronTrackRotator *rot= 0x0;
- /*AliDielectronTrackRotator *rot= LMCL->GetTrackRotator(selectedPID);
- die->SetTrackRotator(rot);
- */
- AliDielectronMixingHandler *mix=LMCL->GetMixingHandler(selectedPID);
- die->SetMixingHandler(mix);
-
- // histogram setup
- // only if an AliDielectronHistos object is attached to the
- // dielectron framework histograms will be filled
- //
- InitHistograms(die,cutDefinition);
-
- // the last definition uses no cuts and only the QA histograms should be filled!
- // InitCF(die,cutDefinition);
-
- return die;
-}
-
-//______________________________________________________________________________________
-
-void InitHistograms(AliDielectron *die, Int_t cutDefinition)
-{
- //
- // Initialise the histograms
- //
-
- //Setup histogram Manager
- AliDielectronHistos *histos=
- new AliDielectronHistos(die->GetName(),
- die->GetTitle());
- //Initialise histogram classes
- histos->SetReservedWords("Track;Pair;Pre;RejTrack;RejPair");
-
- //Event class
- // if (cutDefinition==nDie-1)
- histos->AddClass("Event");
-
- //Track classes
- //to fill also track info from 2nd event loop until 2
- for (Int_t i=0; i<2; ++i){
- histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
- }
-
- //Pair classes
- // to fill also mixed event histograms loop until 10
- for (Int_t i=0; i<3; ++i){
- histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
- }
-
- //ME and track rot
- if (die->GetMixingHandler()) {
- histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3)));
- histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));
- histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));
- histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7)));
- }
- if (die->GetTrackRotator()) {
- histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10)));
- }
-
- //PreFilter Classes
- //to fill also track info from 2nd event loop until 2
- for (Int_t i=0; i<2; ++i){
- histos->AddClass(Form("Pre_%s",AliDielectron::TrackClassName(i)));
- }
-
-
- //Create Classes for Rejected Tracks/Pairs:
- for (Int_t i=0; i<2; ++i){
- histos->AddClass(Form("RejTrack_%s",AliDielectron::TrackClassName(i)));
- }
- for (Int_t i=0; i<3; ++i){
- histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i)));
- }
-
- /*
- //track rotation
-
- histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
- histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
- */
- //add histograms to event class
- histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",
- 1,0.,1.,AliDielectronVarManager::kNevents);
- histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]","0,10,20,40,80,100,101",
- AliDielectronVarManager::kCentrality);
- histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]",100, 0, 100,
- AliDielectronVarManager::kCentrality);
-
- histos->UserHistogram("Event","v0ACrpH2_old","VZERO-AC;v0ACrpH2",
- 100,-2.0,2.0,
- AliDielectronVarManager::kv0ACrpH2);
-
- histos->UserHistogram("Event","v0ArpH2_old","VZERO-A;v0ArpH2",
- 100,-2.0,2.0,
- AliDielectronVarManager::kv0ArpH2);
- histos->UserHistogram("Event","v0CrpH2_old","VZERO-C;v0CrpH2",
- 100,-2.0,2.0,
- AliDielectronVarManager::kv0CrpH2);
-
- histos->UserHistogram("Event","Corr_v0ACrpH2_old","CORR VZERO-AC RP;#Psi_{2}^{V0A} (rad.);#Psi_{2}^{V0C} (rad.)",
- 100,-2.0,2.0.,100,-2.0,2.0,
- AliDielectronVarManager::kv0ArpH2,AliDielectronVarManager::kv0CrpH2);
-
- histos->UserHistogram("Event","v0ACrpH2","VZERO-AC;v0ACrpH2",
- 100,0.,3.15,
- AliDielectronVarManager::kv0ACrpH2);
-
- histos->UserHistogram("Event","v0ArpH2","VZERO-A;v0ArpH2",
- 100,0.,3.15,
- AliDielectronVarManager::kv0ArpH2);
- histos->UserHistogram("Event","v0CrpH2","VZERO-C;v0CrpH2",
- 100,0.,3.15,
- AliDielectronVarManager::kv0CrpH2);
-
- histos->UserHistogram("Event","Corr_v0ACrpH2","CORR VZERO-AC RP;#Psi_{2}^{V0A} (rad.);#Psi_{2}^{V0C} (rad.)",
- 100,0.,3.15.,100,0.,3.15,
- AliDielectronVarManager::kv0ArpH2,AliDielectronVarManager::kv0CrpH2);
-
- //add histograms to Track classes
- /* histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
- histos->UserHistogram("Track","Px","Px;Px [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPx);
- histos->UserHistogram("Track","Py","Py;Py [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPy);
- histos->UserHistogram("Track","Pz","Pz;Pz [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPz);
-
- histos->UserHistogram("Track","NclsSFracTPC","NclsSFracTPC; NclsSFracTPC;#tracks",200,0,10.,AliDielectronVarManager::kNclsSFracTPC);
- histos->UserHistogram("Track","TPCclsDiff","TPCclsDiff; TPCclsDiff;#tracks",200,0,10.,AliDielectronVarManager::kTPCclsDiff);
- */
- histos->UserHistogram("Track","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
- 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
-
- histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
- 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
- /*
- histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
- 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
- histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
- 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
- histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
- 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
-
- histos->UserHistogram("Track","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks",
- 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE);
- histos->UserHistogram("Track","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks",
- 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE);
-
- histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
- 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);
- histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
- 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);
-
- histos->UserHistogram("Track","TOFbeta","TOF beta;P [GeV];TOF beta;#tracks",
- 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta,kTRUE);
-
-
- histos->UserHistogram("Track","Eta","Eta; Eta;#tracks",
- 200,-2,2,AliDielectronVarManager::kEta);
- histos->UserHistogram("Track","Phi","Phi; Phi;#tracks",
- 200,0.,3.15,AliDielectronVarManager::kPhi);
-
- histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
- 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
-
- histos->UserHistogram("Track","dXY_dZ","dXY dZ Map; dXY; dZ;#tracks",
- 200,-2,2,200,-2,2.,AliDielectronVarManager::kImpactParXY,AliDielectronVarManager::kImpactParZ);
-
-
- histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
- histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParZ);
-
- histos->UserHistogram("Track","TPCcrossedRowsOverFindable","Number of Crossed Rows TPC over Findable;TPC crossed rows over findable;#tracks",100,0.,1.,AliDielectronVarManager::kNFclsTPCfCross);
- histos->UserHistogram("Track","TPCcrossedRows","Number of Crossed Rows TPC;TPC crossed rows;#tracks",159,0.,159.,AliDielectronVarManager::kNFclsTPCr);
-
-
- histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
- histos->UserHistogram("Track","ITSnCls","Number of Clusters ITS;ITS number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsITS);
-
- histos->UserHistogram("Track","TPCchi2","TPC Chi2 value;TPC chi2;#tracks",100,0.,10.,AliDielectronVarManager::kTPCchi2Cl);
- histos->UserHistogram("Track","ITSchi2","ITS Chi2 value;ITS chi2;#tracks",100,0.,10.,AliDielectronVarManager::kITSchi2Cl);
-
- histos->UserHistogram("Track","TPCnCls_kNFclsTPCr","nTPC vs nTPCr;nTPC vs nTPCr;#tracks",159,0.,159.,159,0.,159.,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
-
- histos->UserHistogram("Track","kNFclsTPCr_pT","nTPCr vs pt;nTPCr vs pt;#tracks",159,0.,159.,200,0.,20.,AliDielectronVarManager::kNFclsTPCr,AliDielectronVarManager::kPt);
-
- */
-
- //add histograms to Pair classes
- histos->UserHistogram("Pair","InvMassAll","Inv.Mass;Inv. Mass [GeV];#pairs",
- 500,0.0,5.00,AliDielectronVarManager::kM);
- histos->UserHistogram("Pair","InvMassLow","Inv.Mass;Inv. Mass [GeV];#pairs",
- 300,0.0,0.03,AliDielectronVarManager::kM);
- histos->UserHistogram("Pair","InvMassMiddle","Inv.Mass;Inv. Mass [GeV];#pairs",
- 180,0.12,0.3,AliDielectronVarManager::kM);
- histos->UserHistogram("Pair","InvMassHigh","Inv.Mass;Inv. Mass [GeV];#pairs",
- 200,0.3,0.5,AliDielectronVarManager::kM);
-
-
- histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
- 100,-2.,2.,AliDielectronVarManager::kY);
- histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
- 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
- histos->UserHistogram("Pair","PhivPair","PhiV ;#",
- 100,0.,3.15,AliDielectronVarManager::kPhivPair );
-
- histos->UserHistogram("Pair","Pt","Pt;Pt [GeV];#tracks",300,0,30.,AliDielectronVarManager::kPt);
- histos->UserHistogram("Pair","Px","Px;Px [GeV];#tracks",300,0,30.,AliDielectronVarManager::kPx);
- histos->UserHistogram("Pair","Py","Py;Py [GeV];#tracks",300,0,30.,AliDielectronVarManager::kPy);
- histos->UserHistogram("Pair","Pz","Pz;Pz [GeV];#tracks",300,0,30.,AliDielectronVarManager::kPz);
- histos->UserHistogram("Pair","Phi","Phi;Phi[rad];#counts",100,-3.15,3.15,AliDielectronVarManager::kPhi );
-
-
- histos->UserHistogram("Pair","DeltaPhiv0ArpH2","Phi;Phi[rad];#counts",
- 100,-3.15,3.15,AliDielectronVarManager::kDeltaPhiv0ArpH2);
- histos->UserHistogram("Pair","DeltaPhiv0CrpH2","Phi;Phi[rad];#counts",
- 100,-3.15,3.15,AliDielectronVarManager::kDeltaPhiv0CrpH2);
- histos->UserHistogram("Pair","DeltaPhiv0ACrpH2","Phi;Phi[rad];#counts",
- 100,-3.15,3.15,AliDielectronVarManager::kDeltaPhiv0ACrpH2);
-
-
- // histos->UserHistogram("Pair","PairPlanev0ACrpH2Angle","Phi;Phi[rad];#counts",
- // 100,0,1.6,AliDielectronVarManager::kPairPlanev0rpH2Angle);
- // histos->UserHistogram("Pair","PairPlaneMagAngle","Phi;Phi[rad];#counts",
- // 100,0,1.6,AliDielectronVarManager::kPairPlaneMagAngle);
- histos->UserHistogram("Pair","PairPlaneAngle","Phi;Phi[rad];#counts",
- 100,0,1.6,AliDielectronVarManager::kPairPlaneAngle);
-
-
- histos->UserHistogram("Pair","RotationPair_x","Px_Rot;Px_Rot[GeV];#tracks",
- 300,0,30,AliDielectronVarManager::kRotPairx);
- histos->UserHistogram("Pair","RotationPair_y","Px_Rot;Py_Rot[GeV];#tracks",
- 300,0,30,AliDielectronVarManager::kRotPairy);
- histos->UserHistogram("Pair","RotationPair_z","Px_Rot;Pz_Rot[GeV];#tracks",
- 300,0,30,AliDielectronVarManager::kRotPairz);
-
-
-
- //2D Histo Plot
- histos->UserHistogram("Pair","InvMassALLPairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs",
- 1000,0.0,5.0,500,0.,50.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
- histos->UserHistogram("Pair","InvMassALL2PairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs",
- 500,0.0,0.5,500,0.,50.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
- histos->UserHistogram("Pair","InvMassLowPairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs",
- 300,0.0,0.03,500,0.,50.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
- histos->UserHistogram("Pair","InvMassMiddlePairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs",
- 180,0.12,0.3,500,0.,50.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
- histos->UserHistogram("Pair","InvMassHighPairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs",
- 200,0.3,0.5,500,0.,50.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
-
-
- /*
- histos->UserHistogram("Pair","InvMassALLPhivPair","PhivPair vs Inv. Mass;Inv. Mass [GeV]; Phiv",
- 1000,0.0,5.0,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPhivPair);
- histos->UserHistogram("Pair","InvMassALL2PhivPair","PhivPair vs Inv. Mass;Inv. Mass [GeV]; Phiv",
- 500,0.0,0.50,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPhivPair);
- histos->UserHistogram("Pair","InvMassLowPhivPair","PhivPair vs Inv. Mass;Inv. Mass [GeV]; Phiv",
- 300,0.0,0.03,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPhivPair);
- histos->UserHistogram("Pair","InvMassMiddlePhivPair","PhivPair vs Inv. Mass;Inv. Mass [GeV]; Phiv",
- 180,0.12,0.3,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPhivPair);
- histos->UserHistogram("Pair","InvMassHighPhivPair","PhivPair vs Inv. Mass;Inv. Mass [GeV]; Phiv",
- 200,0.3,0.50,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPhivPair);
-
- histos->UserHistogram("Pair","InvMassAllOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV];#pairs",
- 1000,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
- histos->UserHistogram("Pair","InvMassAll2OpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV];#pairs",
- 500,0.0,0.5,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
- histos->UserHistogram("Pair","InvMassLowOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV];#pairs",
- 300,0.0,0.03,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
- histos->UserHistogram("Pair","InvMassMiddleOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV];#pairs",
- 180,0.12,0.3,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
- histos->UserHistogram("Pair","InvMassHighOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV];#pairs",
- 200,0.3,0.5,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
-
-
-
-
- histos->UserHistogram("Pair","InvMassAllPairplaneMagAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 1000,0.0,5.0,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneMagAngle);
- histos->UserHistogram("Pair","InvMassAll2PairplaneMagAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 500,0.0,0.50,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneMagAngle);
- histos->UserHistogram("Pair","InvMassLoweeplaneMagAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 300,0.0,0.03,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneMagAngle);
- histos->UserHistogram("Pair","InvMassMiddleeelaneMagAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 180,0.12,0.3,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneMagAngle);
- histos->UserHistogram("Pair","InvMassHighPairplaneMagAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 200,0.3,0.5,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneMagAngle);
-
- histos->UserHistogram("Pair","InvMassAllPairplaneRPAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 1000,0.0,5.0,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlanev0rpH2Angle);
- histos->UserHistogram("Pair","InvMassAll2PairplaneRPAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 500,0.0,0.5,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlanev0rpH2Angle);
- histos->UserHistogram("Pair","InvMassLoweeplaneRPAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 300,0.0,0.03,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlanev0rpH2Angle);
- histos->UserHistogram("Pair","InvMassMiddleeelaneRPAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 180,0.12,0.3,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlanev0rpH2Angle);
- histos->UserHistogram("Pair","InvMassHighPairplaneRPAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 200,0.3,0.5,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlanev0rpH2Angle);
- */
- histos->UserHistogram("Pair","InvMassAllPairplaneAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 1000,0.0,5.0,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle);
- histos->UserHistogram("Pair","InvMassAll2PairplaneAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 500,0.0,0.50,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle);
- histos->UserHistogram("Pair","InvMassMiddle2PairplaneAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 400,0.1,0.50,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle);
-
- histos->UserHistogram("Pair","InvMassLoweeplaneAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 300,0.0,0.03,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle);
- histos->UserHistogram("Pair","InvMassMiddleeelaneAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 180,0.12,0.3,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle);
- histos->UserHistogram("Pair","InvMassHighPairplaneAngle","ee plane and Mag Vector Angle vs Inv.Mass;Inv. Mass [GeV];Phi [rad]",
- 200,0.3,0.5,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle);
-
-
-
- //add histograms to Track classes
- /* histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
-
- histos->UserHistogram("Pre","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
- 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
-
- histos->UserHistogram("Pre","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
- 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
-
-
- histos->UserHistogram("Pre","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
- 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
- histos->UserHistogram("Pre","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
- 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
- histos->UserHistogram("Pre","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
- 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
-
- histos->UserHistogram("Pre","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks",
- 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE);
- histos->UserHistogram("Pre","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks",
- 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE);
-
- histos->UserHistogram("Pre","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
- 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);
- histos->UserHistogram("Pre","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
- 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);
-
- histos->UserHistogram("Pre","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
- 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
-
- histos->UserHistogram("Pre","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
-
- histos->UserHistogram("Pre","ZVertex ","ZVertex ;ZVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kZv);
- histos->UserHistogram("Pre","XVertex ","XVertex ;XVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kXv);
- histos->UserHistogram("Pre","YVertex ","YVertex ;YVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kYv);
-
- histos->UserHistogram("Pre","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
- */
- //add histograms to Pair classes For Rejected Pairs:
- die->SetHistogramManager(histos);
-}
-
-
-void InitCF(AliDielectron* die, Int_t cutDefinition)
-{
- //
- // Setupd the CF Manager if needed
- //
- AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
-
- //pair variables
- cf->AddVariable(AliDielectronVarManager::kP,200,0,20);
- // cf->AddVariable(AliDielectronVarManager::kPt,200,0,20);// added
- cf->AddVariable(AliDielectronVarManager::kM,201,-0.01,4.01); //20Mev Steps
- //cf->AddVariable(AliDielectronVarManager::kM, 1000,0,5.00); //5Mev Steps
- cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
- //cf->AddVariable(AliDielectronVarManager::kCentrality,100, 0, 100);
-
-
- cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,10.0,30.0,40.0,60.,80.,100.");
-
- //leg variables
- cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE);
- cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE);
- cf->AddVariable(AliDielectronVarManager::kTPCsignal,500,0.0.,500.,kTRUE);
- cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10,kTRUE);
-
- //only in this case write MC truth info
- if (MCenabled) {
- cf->SetStepForMCtruth();
- cf->SetStepsForMCtruthOnly();
- cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
- cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
- }
-
- cf->SetStepsForSignal();
- die->SetCFManagerPair(cf);
-}
-
-//--------------------------------------
-void EnableMC() {
- MCenabled=kTRUE;
-}
-
-
+//#include "PWGDQ/dielectron/macrosLMEE/LMEECutLib.C"\r
+\r
+void InitHistograms(AliDielectron *die, Int_t cutDefinition);\r
+void InitCF(AliDielectron* die, Int_t cutDefinition);\r
+void EnableMC();\r
+\r
+TString names=("noPairing;TPCTOFCentwidenoRej;TPCTOFSemiCent1noRej;TPCTOFSemiCent2noRej;TPCTOFPerinoRej;TPCTOFCentRP;TPCTOFSemiCent1RP;TPCTOFSemiCent2RP;TPCTOFPeriRP;TPCTOFCentMag;TPCTOFSemiCent1Mag;TPCTOFSemiCent2Mag;TPCTOFPeriMag;TPCTOFCentnoTOF;NoPIDNoPairing;TPCTOFCentnoRej");\r
+TObjArray *arrNames=names.Tokenize(";");\r
+const Int_t nDie=arrNames->GetEntries();\r
+\r
+Bool_t MCenabled=kFALSE;\r
+\r
+\r
+AliDielectron* ConfigAsakoLMEEPbPb2011AOD(Int_t cutDefinition, Bool_t hasMC=kFALSE, Bool_t ESDanalysis=kFALSE)\r
+{\r
+\r
+ Int_t selectedPID=-1;\r
+ Int_t selectedCentrality=-1;\r
+ Int_t selectedPairCut=-1;\r
+ // Int_t selectedPairMCut=-1;\r
+ Bool_t rejectionStep=kFALSE;\r
+ Bool_t PairCut=kFALSE; //add by asako\r
+ LMEECutLibAsako* LMCL = new LMEECutLibAsako();\r
+\r
+ //\r
+ // Setup the instance of AliDielectron\r
+ //\r
+\r
+ MCenabled=hasMC;\r
+ // create the actual framework object\r
+\r
+ TString name=Form("%02d",cutDefinition);\r
+ if ((cutDefinition)<arrNames->GetEntriesFast()){\r
+ name=arrNames->At((cutDefinition))->GetName();\r
+ }\r
+\r
+ //thisCut only relevant for MC:\r
+ AliDielectron *die =\r
+ new AliDielectron(Form\r
+ ("%s",name.Data()),\r
+ Form("Track cuts: %s",name.Data()));\r
+\r
+\r
+ //Setup AnalysisSelection:\r
+ if (cutDefinition==0) {\r
+ //not yet implemented\r
+ }\r
+ else if (cutDefinition==1) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011Central;\r
+ rejectionStep = kFALSE;\r
+ PairCut = kFALSE;\r
+\r
+ }\r
+ else if (cutDefinition==2) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011SemiCentral1;\r
+ rejectionStep = kFALSE;\r
+ PairCut=kFALSE;\r
+ }\r
+ else if (cutDefinition==3) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011SemiCentral2;\r
+ rejectionStep = kFALSE;\r
+ PairCut=kFALSE;\r
+ }\r
+\r
+ else if (cutDefinition==4) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011Peripheral;\r
+ rejectionStep = kFALSE;\r
+ PairCut=kFALSE;\r
+ }\r
+\r
+ ///////////////////////////////////////////////////////////\r
+ else if (cutDefinition==5) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011Central;\r
+ selectedPairCut = LMEECutLibAsako::kPbPb2011RP;\r
+ //selectedPairMCut = LMEECutLibAsako::kPbPb2011MassAll;\r
+ rejectionStep = kFALSE;\r
+ PairCut=kTRUE;\r
+ }\r
+ else if (cutDefinition==6) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011SemiCentral1;\r
+ selectedPairCut = LMEECutLibAsako::kPbPb2011RP;\r
+ // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassMiddle;\r
+ rejectionStep = kFALSE;\r
+ PairCut=kTRUE;\r
+ }\r
+ else if (cutDefinition==7) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011SemiCentral2;\r
+ // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassMiddle;\r
+ selectedPairCut = LMEECutLibAsako::kPbPb2011RP;\r
+ rejectionStep = kFALSE;\r
+ PairCut=kTRUE;\r
+ }\r
+ else if (cutDefinition==8) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011Peripheral;\r
+ selectedPairCut = LMEECutLibAsako::kPbPb2011RP;\r
+ // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassMiddle;\r
+ rejectionStep = kFALSE;\r
+ PairCut=kTRUE;\r
+ }\r
+\r
+ /////////////////////////////////////////////////////////\r
+ else if (cutDefinition==9) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011Central;\r
+ selectedPairCut = LMEECutLibAsako::kPbPb2011Mag;\r
+ // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassAll;\r
+ rejectionStep = kFALSE;\r
+ PairCut=kTRUE;\r
+ }\r
+ \r
+ else if (cutDefinition==10) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011SemiCentral1;\r
+ selectedPairCut = LMEECutLibAsako::kPbPb2011Mag;\r
+ // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassMiddle;\r
+ rejectionStep = kFALSE;\r
+ PairCut=kTRUE;\r
+ }\r
+ else if (cutDefinition==11) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011SemiCentral2;\r
+ // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassMiddle;\r
+ selectedPairCut = LMEECutLibAsako::kPbPb2011Mag;\r
+ rejectionStep = kFALSE;\r
+ PairCut=kTRUE;\r
+ }\r
+ else if (cutDefinition==12) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOFwide;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011Peripheral;\r
+ selectedPairCut = LMEECutLibAsako::kPbPb2011Mag;\r
+ // selectedPairMCut = LMEECutLibAsako::kPbPb2011MassMiddle;\r
+ rejectionStep = kFALSE;\r
+ PairCut=kTRUE;\r
+ }\r
+\r
+ \r
+\r
+ ///////////////////////////////////////////////////////\r
+ else if (cutDefinition==13) {\r
+ //selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPC;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011Central;\r
+ rejectionStep = kFALSE;\r
+ PairCut=kFALSE;\r
+ }\r
+ else if (cutDefinition==14) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011NoPID;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011Central;\r
+ rejectionStep = kFALSE;\r
+ PairCut=kFALSE;\r
+ }\r
+\r
+ else if (cutDefinition==15) {\r
+ selectedPID = LMEECutLibAsako::kPbPb2011TPCandTOF;\r
+ selectedCentrality = LMEECutLibAsako::kPbPb2011Central;\r
+ rejectionStep = kFALSE;\r
+ PairCut = kFALSE;\r
+ }\r
+\r
+\r
+ else Semi{\r
+ cout << " =============================== " << endl;\r
+ cout << " ==== INVALID CONFIGURATION ==== " << endl;\r
+ cout << " =============================== " << endl;\r
+ }\r
+\r
+\r
+ //Now configure task\r
+\r
+ //Apply correct Pre-Filter Scheme, if necessary\r
+ die->SetPreFilterAllSigns();\r
+\r
+ //switch off KF PArticle:\r
+ die->SetUseKF(kFALSE);\r
+\r
+ if (selectedPID == LMEECutLibAsako::kPbPb2011NoPID) {\r
+ die->SetNoPairing();\r
+ }\r
+\r
+ // if (ESDanalysis) {\r
+ //die->GetTrackFilter().AddCuts( LMCL->GetESDTrackCutsAna(selectedPID) );\r
+ // }\r
+\r
+ die->GetEventFilter().AddCuts(LMCL->GetCentralityCuts(selectedCentrality));\r
+ die->GetTrackFilter().AddCuts( LMCL->GetTrackCutsAna(selectedPID) );\r
+ die->GetTrackFilter().AddCuts( LMCL->GetPIDCutsAna(selectedPID) );\r
+\r
+ if(PairCut){\r
+ if (rejectionStep) {\r
+ die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) );\r
+ die->GetPairPreFilter().AddCuts( LMCL->GetPairPreFilterCuts(selectedPairCut));\r
+ die->GetPairFilter().AddCuts( LMCL->GetPairCuts(selectedPairCut));\r
+ }\r
+ else { \r
+ die->GetPairFilter().AddCuts( LMCL->GetPairCutsInOut(selectedPairCut));\r
+ // die->GetPairFilter().AddCuts( LMCL->GetPairCuts4(selectedPairMCut));\r
+ }\r
+ }\r
+ \r
+\r
+\r
+\r
+ AliDielectronTrackRotator *rot= 0x0;\r
+ /*AliDielectronTrackRotator *rot= LMCL->GetTrackRotator(selectedPID);\r
+ die->SetTrackRotator(rot);\r
+ */\r
+ AliDielectronMixingHandler *mix=LMCL->GetMixingHandler(selectedPID);\r
+ die->SetMixingHandler(mix);\r
+\r
+ // histogram setup\r
+ // only if an AliDielectronHistos object is attached to the\r
+ // dielectron framework histograms will be filled\r
+ //\r
+ InitHistograms(die,cutDefinition);\r
+\r
+ // the last definition uses no cuts and only the QA histograms should be filled!\r
+ // InitCF(die,cutDefinition);\r
+\r
+ return die;\r
+}\r
+\r
+//______________________________________________________________________________________\r
+\r
+void InitHistograms(AliDielectron *die, Int_t cutDefinition)\r
+{\r
+ //\r
+ // Initialise the histograms\r
+ //\r
+\r
+ //Setup histogram Manager\r
+ AliDielectronHistos *histos=\r
+ new AliDielectronHistos(die->GetName(),\r
+ die->GetTitle());\r
+ //Initialise histogram classes\r
+ histos->SetReservedWords("Track;Pair;Pre;RejTrack;RejPair");\r
+\r
+ //Event class\r
+ // if (cutDefinition==nDie-1) \r
+ histos->AddClass("Event");\r
+\r
+ //Track classes\r
+ //to fill also track info from 2nd event loop until 2\r
+ for (Int_t i=0; i<2; ++i){\r
+ histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));\r
+ }\r
+\r
+ //Pair classes\r
+ // to fill also mixed event histograms loop until 10\r
+ for (Int_t i=0; i<3; ++i){\r
+ histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));\r
+ }\r
+\r
+ //ME and track rot\r
+ if (die->GetMixingHandler()) {\r
+ histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3)));\r
+ histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));\r
+ histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));\r
+ histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7)));\r
+ }\r
+ if (die->GetTrackRotator()) {\r
+ histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10)));\r
+ }\r
+\r
+ //PreFilter Classes\r
+ //to fill also track info from 2nd event loop until 2\r
+ for (Int_t i=0; i<2; ++i){\r
+ histos->AddClass(Form("Pre_%s",AliDielectron::TrackClassName(i)));\r
+ }\r
+\r
+\r
+ //Create Classes for Rejected Tracks/Pairs:\r
+ for (Int_t i=0; i<2; ++i){\r
+ histos->AddClass(Form("RejTrack_%s",AliDielectron::TrackClassName(i)));\r
+ }\r
+ for (Int_t i=0; i<3; ++i){\r
+ histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i)));\r
+ }\r
+\r
+ /*\r
+ //track rotation\r
+\r
+ histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));\r
+ histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));\r
+ */\r
+ //add histograms to event class\r
+ histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",\r
+ 1,0.,1.,AliDielectronVarManager::kNevents);\r
+ histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]","0,10,20,40,80,100,101",\r
+ AliDielectronVarManager::kCentrality);\r
+ histos->UserHistogram("Event","Centrality2","Centrality;Centrality [%]",100, 0, 100,\r
+ AliDielectronVarManager::kCentrality);\r
+\r
+ histos->UserHistogram("Event","v0ACrpH2","VZERO-AC;v0ACrpH2",\r
+ 100,-2.0,2.0,\r
+ AliDielectronVarManager::kv0ACrpH2);\r
+ histos->UserHistogram("Event","v0ArpH2","VZERO-A;v0ArpH2",\r
+ 100,-2.0,2.0,\r
+ AliDielectronVarManager::kv0ArpH2);\r
+ histos->UserHistogram("Event","v0CrpH2","VZERO-C;v0CrpH2",\r
+ 100,-2.0,2.0,\r
+ AliDielectronVarManager::kv0CrpH2);\r
+ histos->UserHistogram("Event","RadomRP","RandomRP;RandomRP",\r
+ 100,-2.0,2.0,\r
+ AliDielectronVarManager::kRandomRP);\r
+\r
+ \r
+ /* histos->UserHistogram("Event","Corr_v0ACrpH2_old","CORR VZERO-AC RP;#Psi_{2}^{V0A} (rad.);#Psi_{2}^{V0C} (rad.)",\r
+ 100,-2.0,2.0.,100,-2.0,2.0,\r
+ AliDielectronVarManager::kv0ArpH2,AliDielectronVarManager::kv0CrpH2);\r
+\r
+ histos->UserHistogram("Event","v0ACrpH2","VZERO-AC;v0ACrpH2",\r
+ 100,0.,3.15,\r
+ AliDielectronVarManager::kv0ACrpH2);\r
+\r
+ histos->UserHistogram("Event","v0ArpH2","VZERO-A;v0ArpH2",\r
+ 100,0.,3.15,\r
+ AliDielectronVarManager::kv0ArpH2);\r
+ histos->UserHistogram("Event","v0CrpH2","VZERO-C;v0CrpH2",\r
+ 100,0.,3.15,\r
+ AliDielectronVarManager::kv0CrpH2);\r
+\r
+ histos->UserHistogram("Event","Corr_v0ACrpH2","CORR VZERO-AC RP;#Psi_{2}^{V0A} (rad.);#Psi_{2}^{V0C} (rad.)",\r
+ 100,0.,3.15.,100,0.,3.15,\r
+ AliDielectronVarManager::kv0ArpH2,AliDielectronVarManager::kv0CrpH2);\r
+ */\r
+ //add histograms to Track classes\r
+ histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);\r
+ histos->UserHistogram("Track","Px","Px;Px [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPx);\r
+ histos->UserHistogram("Track","Py","Py;Py [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPy);\r
+ histos->UserHistogram("Track","Pz","Pz;Pz [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPz);\r
+\r
+ // histos->UserHistogram("Track","NclsSFracTPC","NclsSFracTPC; NclsSFracTPC;#tracks",200,0,10.,AliDielectronVarManager::kNclsSFracTPC);\r
+ // histos->UserHistogram("Track","TPCclsDiff","TPCclsDiff; TPCclsDiff;#tracks",200,0,10.,AliDielectronVarManager::kTPCclsDiff);\r
+ \r
+ // histos->UserHistogram("Track","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",\r
+ // 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);\r
+\r
+ // histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",\r
+ // 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);\r
+ /* \r
+ histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",\r
+ 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);\r
+ histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",\r
+ 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);\r
+ histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",\r
+ 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);\r
+\r
+ histos->UserHistogram("Track","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks",\r
+ 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE);\r
+ histos->UserHistogram("Track","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks",\r
+ 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE);\r
+\r
+ histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",\r
+ 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);\r
+ histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",\r
+ 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);\r
+\r
+ histos->UserHistogram("Track","TOFbeta","TOF beta;P [GeV];TOF beta;#tracks",\r
+ 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta,kTRUE);\r
+\r
+ */\r
+ histos->UserHistogram("Track","Eta","Eta; Eta;#tracks",\r
+ 200,-2,2,AliDielectronVarManager::kEta);\r
+ histos->UserHistogram("Track","Phi","Phi; Phi;#tracks",\r
+ 200,0.,3.15,AliDielectronVarManager::kPhi);\r
+ /*\r
+ histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",\r
+ 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);\r
+\r
+ histos->UserHistogram("Track","dXY_dZ","dXY dZ Map; dXY; dZ;#tracks",\r
+ 200,-2,2,200,-2,2.,AliDielectronVarManager::kImpactParXY,AliDielectronVarManager::kImpactParZ);\r
+\r
+\r
+ histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);\r
+ histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParZ);\r
+\r
+ histos->UserHistogram("Track","TPCcrossedRowsOverFindable","Number of Crossed Rows TPC over Findable;TPC crossed rows over findable;#tracks",100,0.,1.,AliDielectronVarManager::kNFclsTPCfCross);\r
+ histos->UserHistogram("Track","TPCcrossedRows","Number of Crossed Rows TPC;TPC crossed rows;#tracks",159,0.,159.,AliDielectronVarManager::kNFclsTPCr);\r
+\r
+ \r
+ histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);\r
+ histos->UserHistogram("Track","ITSnCls","Number of Clusters ITS;ITS number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsITS);\r
+\r
+ histos->UserHistogram("Track","TPCchi2","TPC Chi2 value;TPC chi2;#tracks",100,0.,10.,AliDielectronVarManager::kTPCchi2Cl);\r
+ histos->UserHistogram("Track","ITSchi2","ITS Chi2 value;ITS chi2;#tracks",100,0.,10.,AliDielectronVarManager::kITSchi2Cl);\r
+\r
+ histos->UserHistogram("Track","TPCnCls_kNFclsTPCr","nTPC vs nTPCr;nTPC vs nTPCr;#tracks",159,0.,159.,159,0.,159.,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);\r
+\r
+ histos->UserHistogram("Track","kNFclsTPCr_pT","nTPCr vs pt;nTPCr vs pt;#tracks",159,0.,159.,200,0.,20.,AliDielectronVarManager::kNFclsTPCr,AliDielectronVarManager::kPt);\r
+ \r
+ */\r
+ \r
+ //add histograms to Pair classes\r
+ histos->UserHistogram("Pair","InvMassAll","Inv.Mass;Inv. Mass [GeV];#pairs",\r
+ 500,0.0,5.00,AliDielectronVarManager::kM);\r
+ /* histos->UserHistogram("Pair","InvMassLow","Inv.Mass;Inv. Mass [GeV];#pairs",\r
+ 300,0.0,0.03,AliDielectronVarManager::kM);\r
+ histos->UserHistogram("Pair","InvMassMiddle","Inv.Mass;Inv. Mass [GeV];#pairs",\r
+ 180,0.12,0.3,AliDielectronVarManager::kM);\r
+ histos->UserHistogram("Pair","InvMassHigh","Inv.Mass;Inv. Mass [GeV];#pairs",\r
+ 200,0.3,0.5,AliDielectronVarManager::kM);\r
+ */\r
+ \r
+ histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",\r
+ 100,-2.,2.,AliDielectronVarManager::kY);\r
+ histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",\r
+ 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);\r
+ histos->UserHistogram("Pair","PhivPair","PhiV ;#",\r
+ 100,0.,3.15,AliDielectronVarManager::kPhivPair );\r
+ \r
+ histos->UserHistogram("Pair","Pt","Pt;Pt [GeV];#tracks",300,0,30.,AliDielectronVarManager::kPt);\r
+ histos->UserHistogram("Pair","Px","Px;Px [GeV];#tracks",300,0,30.,AliDielectronVarManager::kPx);\r
+ histos->UserHistogram("Pair","Py","Py;Py [GeV];#tracks",300,0,30.,AliDielectronVarManager::kPy);\r
+ histos->UserHistogram("Pair","Pz","Pz;Pz [GeV];#tracks",300,0,30.,AliDielectronVarManager::kPz);\r
+ histos->UserHistogram("Pair","Phi","Phi;Phi[rad];#counts",100,-3.15,3.15,AliDielectronVarManager::kPhi );\r
+ \r
+ \r
+ histos->UserHistogram("Pair","DeltaPhiv0ArpH2","Phi;Phi[rad];#counts",\r
+ 100,-3.15,3.15,AliDielectronVarManager::kDeltaPhiv0ArpH2);\r
+ histos->UserHistogram("Pair","DeltaPhiv0CrpH2","Phi;Phi[rad];#counts",\r
+ 100,-3.15,3.15,AliDielectronVarManager::kDeltaPhiv0CrpH2);\r
+ histos->UserHistogram("Pair","DeltaPhiv0ACrpH2","Phi;Phi[rad];#counts",\r
+ 100,-3.15,3.15,AliDielectronVarManager::kDeltaPhiv0ACrpH2);\r
+ histos->UserHistogram("Pair","DeltaPhiRandomRP","Phi;Phi[rad];#counts",\r
+ 100,-3.15,3.15,AliDielectronVarManager::kDeltaPhiRandomRP);\r
+\r
+ \r
+ histos->UserHistogram("Pair","PairPlaneAngle2C","Phi;Phi[rad];#counts",\r
+ 100,0,1.6,AliDielectronVarManager::kPairPlaneAngle2C);\r
+ histos->UserHistogram("Pair","PairPlaneAngle3C","Phi;Phi[rad];#counts",\r
+ 100,0,1.6,AliDielectronVarManager::kPairPlaneAngle3C);\r
+ histos->UserHistogram("Pair","PairPlaneAngle4C","Phi;Phi[rad];#counts",\r
+ 100,0,1.6,AliDielectronVarManager::kPairPlaneAngle4C);\r
+ histos->UserHistogram("Pair","PairPlaneAngleRan","Phi;Phi[rad];#counts",\r
+ 100,0,1.6,AliDielectronVarManager::kPairPlaneAngle3Ran);\r
+\r
+ \r
+ \r
+ //2D Histo Plot\r
+ \r
+ histos->UserHistogram("Pair","InvMAllPP1C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 500,0.0,0.50,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle1C);\r
+ histos->UserHistogram("Pair","InvMLowPP1C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 300,0.0,0.03,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle1C);\r
+ histos->UserHistogram("Pair","InvMMiddlePP1C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 180,0.12,0.3,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle1C);\r
+ histos->UserHistogram("Pair","InvMHighPP1C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 200,0.3,0.5,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle1C);\r
+ \r
+ histos->UserHistogram("Pair","InvMAllPP2C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 500,0.0,0.50,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle2C);\r
+ histos->UserHistogram("Pair","InvMLowPP2C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 300,0.0,0.03,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle2C);\r
+ histos->UserHistogram("Pair","InvMMiddlePP2C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 180,0.12,0.3,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle2C);\r
+ histos->UserHistogram("Pair","InvMHighPP2C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 200,0.3,0.5,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle2C);\r
+\r
+ histos->UserHistogram("Pair","InvMAllPP3C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 500,0.0,0.50,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle3C);\r
+ histos->UserHistogram("Pair","InvMLowPP3C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 300,0.0,0.03,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle3C);\r
+ histos->UserHistogram("Pair","InvMMiddlePP3C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 180,0.12,0.3,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle3C);\r
+ histos->UserHistogram("Pair","InvMHighPP3C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 200,0.3,0.5,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle3C);\r
+\r
+ histos->UserHistogram("Pair","InvMAllPP4C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 500,0.0,0.50,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle4C);\r
+ histos->UserHistogram("Pair","InvMLowPP4C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 300,0.0,0.03,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle4C);\r
+ histos->UserHistogram("Pair","InvMMiddlePP4C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 180,0.12,0.3,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle4C);\r
+ histos->UserHistogram("Pair","InvMHighPP4C","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 200,0.3,0.5,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle4C);\r
+ /*\r
+ histos->UserHistogram("Pair","InvMAllPP3Ran","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 500,0.0,0.50,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle3Ran);\r
+ histos->UserHistogram("Pair","InvMLowPP3Ran","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 300,0.0,0.03,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle3Ran);\r
+ histos->UserHistogram("Pair","InvMMiddlePP3Ran","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 180,0.12,0.3,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle3Ran);\r
+ histos->UserHistogram("Pair","InvMHighPP3Ran","Inv.Mass vs PairPlaneAngle;Inv. Mass [GeV];Phi [rad]",\r
+ 200,0.3,0.5,100,0.,3.15,AliDielectronVarManager::kM,AliDielectronVarManager::kPairPlaneAngle3Ran);\r
+ */\r
+ \r
+ \r
+\r
+ //add histograms to Track classes\r
+ /* histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);\r
+\r
+ histos->UserHistogram("Pre","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",\r
+ 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);\r
+\r
+ histos->UserHistogram("Pre","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",\r
+ 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);\r
+\r
+\r
+ histos->UserHistogram("Pre","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",\r
+ 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);\r
+ histos->UserHistogram("Pre","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",\r
+ 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);\r
+ histos->UserHistogram("Pre","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",\r
+ 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);\r
+\r
+ histos->UserHistogram("Pre","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks",\r
+ 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE);\r
+ histos->UserHistogram("Pre","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks",\r
+ 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE);\r
+\r
+ histos->UserHistogram("Pre","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",\r
+ 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);\r
+ histos->UserHistogram("Pre","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",\r
+ 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);\r
+\r
+ histos->UserHistogram("Pre","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",\r
+ 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);\r
+\r
+ histos->UserHistogram("Pre","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);\r
+\r
+ histos->UserHistogram("Pre","ZVertex ","ZVertex ;ZVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kZv);\r
+ histos->UserHistogram("Pre","XVertex ","XVertex ;XVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kXv);\r
+ histos->UserHistogram("Pre","YVertex ","YVertex ;YVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kYv);\r
+\r
+ histos->UserHistogram("Pre","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);\r
+ */ \r
+ //add histograms to Pair classes For Rejected Pairs:\r
+ die->SetHistogramManager(histos);\r
+}\r
+\r
+void InitCF(AliDielectron* die, Int_t cutDefinition)\r
+{\r
+ //\r
+ // Setupd the CF Manager if needed\r
+ //\r
+ AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());\r
+\r
+ //pair variables\r
+ cf->AddVariable(AliDielectronVarManager::kP,200,0,20);\r
+ // cf->AddVariable(AliDielectronVarManager::kPt,200,0,20);// added\r
+ cf->AddVariable(AliDielectronVarManager::kM,201,-0.01,4.01); //20Mev Steps\r
+ //cf->AddVariable(AliDielectronVarManager::kM, 1000,0,5.00); //5Mev Steps \r
+ cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);\r
+ //cf->AddVariable(AliDielectronVarManager::kCentrality,100, 0, 100);\r
+\r
+\r
+ cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,10.0,30.0,40.0,60.,80.,100.");\r
+\r
+ //leg variables\r
+ cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE);\r
+ cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE);\r
+ cf->AddVariable(AliDielectronVarManager::kTPCsignal,500,0.0.,500.,kTRUE);\r
+ cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10,kTRUE);\r
+\r
+ //only in this case write MC truth info\r
+ if (MCenabled) {\r
+ cf->SetStepForMCtruth();\r
+ cf->SetStepsForMCtruthOnly();\r
+ cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);\r
+ cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);\r
+ }\r
+\r
+ cf->SetStepsForSignal();\r
+ die->SetCFManagerPair(cf);\r
+}\r
+\r
+//--------------------------------------\r
+void EnableMC() {\r
+ MCenabled=kTRUE;\r
+}\r
+\r
+\r
+\r
-class LMEECutLibAsako {
-
-public:
- static enum LMMECutSet {
- kPbPb2011NoPID,
- kPbPb2011TPCandTOF,
- kPbPb2011TPCandTOFHPT,
- kPbPb2011TPC, //TOF required, more relaxed cut on TPC
- kPbPb2011TPCandTOFwide, //TOF required, more relaxed cut on TPC
- kPbPb2011TPCorTOF,
- kpp2010TPCandTOF,
- kpp2010TPCorTOF,
- kCUTSETMAX
- };
-
- static enum LMMECentSel {
- kPbPb2011Central,
- kPbPb2011SemiCentral1,
- kPbPb2011SemiCentral2,
- kPbPb2011Peripheral,
- kCENTSELMAX
- };
-
- static enum LMEEPairCutSet{
- kPbPb2011RP,
- kPbPb2011Mag,
- // kPbPb2011RPxy,
- //kPbPb2011RPxz,
-
- kPbPb2011MassLow,
- kPbPb2011MassMiddle,
- kPbPb2011MassHigh,
- kPbPb2011MassAll,
-
-
-
- kPAIRCUTSETMAX
- };
-
- //char* LMEECutNames[kCUTSETMAX] = { "PbPb2011TPCandTOF","PbPb2011TPCorTOF"};
-
-
- LMEECutLib() {}
-
- AliDielectronEventCuts* GetEventCuts(Int_t cutSet);
- AliAnalysisCuts* GetCentralityCuts(Int_t centSel);
- AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet);
- AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet);
-
- AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet);
- AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet);
-
- AliAnalysisCuts* GetPairCuts2(Int_t cutSet,Bool_t tooglePC=kFALSE);
- AliAnalysisCuts* GetPairCuts(Int_t cutSet);
-
- AliAnalysisCuts* GetPairCutsInOut(Int_t cutSet);
- AliAnalysisCuts* GetPairCuts4(Int_t cutSet);
-
- AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet);
- AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet);
-
-
-
-
- AliDielectronEventCuts* GetEventCuts(Int_t cutSet) {
- AliDielectronEventCuts* eventCuts = 0x0;
- switch (cutSet) {
- case kPbPb2011NoPID:
- case kPbPb2011TPCandTOF :
- case kPbPb2011TPCandTOFHPT:
- case kPbPb2011TPC :
- case kPbPb2011TPCandTOFwide :
- case kPbPb2011TPCorTOF :
- case kpp2010TPCandTOF :
- case kpp2010TPCorTOF :
- eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0");
- eventCuts->SetVertexType(AliDielectronEventCuts::kVtxSPD); // AOD
- //eventCuts->SetVertexType(AliDielectronEventCuts::kVtxTPC); // AOD
- // eventCuts->SetCentralityRange(0.0,80.0);
- eventCuts->SetRequireVertex();
- eventCuts->SetMinVtxContributors(1);
- eventCuts->SetVertexZ(-10.,10.);
- break;
- default: cout << "No Event Cut defined" << endl;
- }
- return eventCuts;
- }
-
- AliAnalysisCuts* GetCentralityCuts(Int_t centSel) {
- AliDielectronVarCuts* centCuts = 0x0;
- switch (centSel) {
- case kPbPb2011Central:
- centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Central");
- centCuts->AddCut(AliDielectronVarManager::kCentrality,0.,10.);
- break;
- case kPbPb2011SemiCentral1:
- centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral1");
- //Restrict to 50%, Trigger selction
- centCuts->AddCut(AliDielectronVarManager::kCentrality,10.,30.);
- break;
- case kPbPb2011SemiCentral2:
- centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral2");
- //Restrict to 50%, Trigger selction
- centCuts->AddCut(AliDielectronVarManager::kCentrality,30.,50.);//
- break;
- case kPbPb2011Peripheral:
- centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Peripheral");
- centCuts->AddCut(AliDielectronVarManager::kCentrality,50.,90.);
- break;
- default: cout << "No Centrality selected" << endl;
- }
- return centCuts;
- }
-
-
- AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet) {
- AliDielectronTrackRotator* trackRotator = 0x0;
- switch (cutSet) {
- case kPbPb2011NoPID:
- case kPbPb2011TPCandTOF :
- case kPbPb2011TPCandTOFHPT:
- case kPbPb2011TPC :
- case kPbPb2011TPCandTOFwide :
- case kPbPb2011TPCorTOF :
- case kpp2010TPCandTOF :
- case kpp2010TPCorTOF :
- trackRotator = new AliDielectronTrackRotator();
- trackRotator->SetIterations(20);
- trackRotator->SetConeAnglePhi(TMath::Pi()/180*165);
- trackRotator->SetStartAnglePhi(TMath::Pi());
- break;
- default: cout << "No Rotator defined" << endl;
- }
- return trackRotator;
- }
-
-
- AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet) {
- AliDielectronMixingHandler* mixingHandler = 0x0;
- switch (cutSet) {
- case kPbPb2011TPCorTOF :
- /*
- mixingHandler = new AliDielectronMixingHandler;
- mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");
- mixingHandler->AddVariable(AliDielectronVarManager::kCentrality,"0,5,10,20,40,80");
- mixingHandler->SetDepth(25);
- mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);
- break;
- */
- case kPbPb2011NoPID:
- case kPbPb2011TPCandTOF :
- case kPbPb2011TPCandTOFHPT:
- case kPbPb2011TPC :
- case kPbPb2011TPCandTOFwide :
- mixingHandler = new AliDielectronMixingHandler;
- mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");
- mixingHandler->AddVariable(AliDielectronVarManager::kCentrality,"0,5,10,20,40,80");
- mixingHandler->AddVariable(AliDielectronVarManager::kv0ACrpH2,"-6*(TMath::Pi()/6),-5*(TMath::Pi()/6),-4*(TMath::Pi()/6),-3*(TMath::Pi()/6),-2*(TMath::Pi()/6),-1*(TMath::Pi()/6),0,1*(TMath::Pi()/6),2*(TMath::Pi()/6),3*(TMath::Pi()/6),4*(TMath::Pi()/6),5*(TMath::Pi()/6),6*(TMath::Pi()/6)");
- //mixingHandler->SetDepth(50);
- mixingHandler->SetDepth(15);
- mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);
- break;
- case kpp2010TPCandTOF :
- case kpp2010TPCorTOF :
- mixingHandler = new AliDielectronMixingHandler;
- mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");
- mixingHandler->AddVariable(AliDielectronVarManager::kNacc,"0,10000");
- //might want to add multiplicity?
- mixingHandler->SetDepth(50);
- mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);
- break;
- default: cout << "No Rotator defined" << endl;
- }
- return mixingHandler;
- }
-
-
- AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet) {
- AliAnalysisCuts* anaCuts=0x0;
-
- // + [2] added for Dec2010 Cut!
- TF1 *lowerCut = new TF1("lowerCut", "[0] * TMath::Exp([1]*x) + [2]", 0, 20);
- /* until Nov2010
- lowerCut->SetParameter(0, -2.7);
- lowerCut->SetParameter(1, -0.4357);
- */
- /* 18.01.2011 ALiHFEpid.cxx */
- lowerCut->SetParameter(0,-3.7);
- lowerCut->SetParameter(1,-0.8);
- lowerCut->SetParameter(2,-0.35);
-
- if (MCenabled) { //overwrite parameters
- lowerCut->SetParameter(0,-2.5);
- lowerCut->SetParameter(2,-2.2);
- }
-
- //---------------------------------------------
- AliDielectronPID *pidTPCTOFeOnly = new AliDielectronPID("TPC-TOF","TPC-TOF");
- pidTPCTOFeOnly->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3,3.,0.0,100.,kFALSE);
- pidTPCTOFeOnly->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE );
-
-
- AliDielectronPID *pidTPCandTOF = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE");
- pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE);
- pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
- pidTPCandTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE );
-
- AliDielectronPID *pidTPChardTOF = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE");
- pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,lowerCut,3.,0.0,100.,kFALSE);
- pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE);
- pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,100.,kTRUE);
- pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,100.,kTRUE);
- pidTPChardTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE );
- //___________________________________________
- AliDielectronPID *pidTT = new AliDielectronPID("TPC-TOF","TPC-TOF");
- pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5,3.,0.2,0.4,kFALSE);
- pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3,3.,0.4,100.,kFALSE);
- pidTT->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.2 , 100., kFALSE );
-
- pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE);
- pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,100.,kTRUE);
- pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,100.,kTRUE);
- //___________________________________________
- AliDielectronVarCuts *pidTPCsignal = new AliDielectronVarCuts("pidTPCsignal","cut on the TPC signal");
- if (MCenabled) {
- pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,65.,85.);
- }
- else {
- pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,75.,90.);
- }
- //___________________________________________
-
- AliDielectronVarCuts *pidTPCsignalWide = new AliDielectronVarCuts("pidTPCsignalWide","cut on the TPC signal");
- pidTPCsignalWide->AddCut(AliDielectronVarManager::kTPCsignal,75.,90.);
-
-
- AliDielectronVarCuts *pTPCHPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt");
- pTPCHPT->AddCut(AliDielectronVarManager::kPt,.4,3.0);
-
- AliDielectronVarCuts *pTPC = new AliDielectronVarCuts("P>.4","P>.4");
- pTPC->AddCut(AliDielectronVarManager::kPt,.4,2.0);
-
- AliDielectronVarCuts *pMin = new AliDielectronVarCuts("P>.2","P>.2");
- pMin->AddCut(AliDielectronVarManager::kPt,.2,2.5);
-
- switch (cutSet) {
- case kPbPb2011NoPID:
- AliDielectronCutGroup* cgSecondTrackFilterNoPID = new AliDielectronCutGroup("cgNoPID","cgNoPID",AliDielectronCutGroup::kCompAND);
- cgSecondTrackFilterNoPID->AddCut(pTPC);
- anaCuts= cgSecondTrackFilterNoPID;
- break;
- case kPbPb2011TPCandTOFHPT:
- AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
- cgSecondTrackFilterPIDTPC1->AddCut(pTPCHPT);
- cgSecondTrackFilterPIDTPC1->AddCut(pidTPCTOFeOnly);
- cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal);
- anaCuts = cgSecondTrackFilterPIDTPC1;
-
- case kPbPb2011TPCandTOF :
- AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
- cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
- //cgSecondTrackFilterPIDTPC1->AddCut(pidTPChardTOF);
- // cgSecondTrackFilterPIDTPC1->AddCut(pidTPCTOFeOnly);
- cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF);
- cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal);
- anaCuts = cgSecondTrackFilterPIDTPC1;
- break;
-
- case kPbPb2011TPC :
- AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
- cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
- cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignalWide);
- anaCuts = cgSecondTrackFilterPIDTPC1;
- break;
-
- case kPbPb2011TPCandTOFwide :
- AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
- cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
- cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF);
- cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignalWide);
- anaCuts = cgSecondTrackFilterPIDTPC1;
- break;
-
- case kPbPb2011TPCorTOF :
- AliDielectronCutGroup* cgSecondTrackFilterPIDTPC2 = new AliDielectronCutGroup("cgPIDTPC2","cgPIDTPC2",AliDielectronCutGroup::kCompAND);
- cgSecondTrackFilterPIDTPC2->AddCut(pMin);
- cgSecondTrackFilterPIDTPC2->AddCut(pidTT);
- cgSecondTrackFilterPIDTPC2->AddCut(pidTPCsignal);
- anaCuts = cgSecondTrackFilterPIDTPC2;
- break;
-
- case kpp2010TPCandTOF :
- AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
- cgSecondTrackFilterPIDTPC->AddCut(pTPC);
- //cgSecondTrackFilterPIDTPC->AddCut(pidTPChardTOF);
- cgSecondTrackFilterPIDTPC->AddCut(pidTPCTOFeOnly);
- anaCuts = cgSecondTrackFilterPIDTPC;
- break;
- case kpp2010TPCorTOF :
- AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
- cgSecondTrackFilterPIDTPC->AddCut(pMin);
- cgSecondTrackFilterPIDTPC->AddCut(pidTT);
- anaCuts = cgSecondTrackFilterPIDTPC;
- break;
- default: cout << "No Analysis PID Cut defined " << endl;
- }
- return anaCuts;
- }
-
- AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet) {
- AliAnalysisCuts* anaCuts=0x0;
- switch (cutSet) {
- case kPbPb2011NoPID:
- case kPbPb2011TPCandTOF :
- case kPbPb2011TPCandTOFHPT:
- case kPbPb2011TPC :
- case kPbPb2011TPCandTOFwide :
- case kPbPb2011TPCorTOF :
- case kpp2010TPCandTOF :
- case kpp2010TPCorTOF :
- AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
- AliDielectronCutGroup* cgITSTPC = new AliDielectronCutGroup("cgITSTPC","cgITSTPC",AliDielectronCutGroup::kCompAND);
- AliDielectronPID *pidITSTPC = new AliDielectronPID("TPCpre","TPCpre");
- pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
- cgITSTPC->AddCut(pidITSTPC);
-
-
- AliDielectronCutGroup* cgITSSA = new AliDielectronCutGroup("cgITSSA","cgITSSA",AliDielectronCutGroup::kCompAND);
- AliDielectronPID *pidITSSA = new AliDielectronPID("pidITSSA","pidITSSA");
- pidITSSA->AddCut(AliDielectronPID::kITS,AliPID::kElectron,-3.,3.);
- cgITSSA->AddCut(pidITSSA);
- // cgITSSA->AddCut(GetTrackCutsPre(cutSet));
-
- AliDielectronCutGroup* cgInitialTrackFilter = new AliDielectronCutGroup("cgInitialTrackFilter","cgInitialTrackFilter",AliDielectronCutGroup::kCompOR);
- cgInitialTrackFilter->AddCut(cgITSTPC);
- cgInitialTrackFilter->AddCut(cgITSSA);
- anaCuts = cgInitialTrackFilter;
- break;
- default: cout << "No Pre-PID Cut defined " << endl;
- }
- return anaCuts;
- }
-
-
-
- AliAnalysisCuts* GetPairCuts2(Int_t cutSet, Bool_t togglePC /*=kFALSE*/) {
- AliAnalysisCuts* pairCuts=0x0;
- switch (cutSet) {
- case kPbPb2011TPCorTOF :
- case kpp2010TPCandTOF :
- AliDielectronVarCuts* pairCutsV= new AliDielectronVarCuts("InvMass","InvMass > 150 MeV");
- pairCutsV->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE);
- pairCuts = pairCutsV;
- break;
- case kPbPb2011NoPID:
- case kPbPb2011TPCandTOF :
- case kPbPb2011TPC :
- case kPbPb2011TPCandTOFHPT:
- case kPbPb2011TPCandTOFwide :
- case kpp2010TPCorTOF :
- if (!togglePC) {
-
- AliDielectronCutGroup* pairCutsCG2 =new AliDielectronCutGroup("pairCutsCG2","pairCutsCG2",AliDielectronCutGroup::kCompOR);
- AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
- pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
- pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 0.0, 2.0);
- pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");
- pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.3);
- pairCutsInvMgood =new AliDielectronVarCuts("InvM Cuts good","InvM>0.3");
- pairCutsInvMgood->AddCut(AliDielectronVarManager::kM, 0.3, 99999.);
- pairCutsCG->AddCut(pairCutsPhiv);
- pairCutsCG->AddCut(pairCutsInvM);
- pairCutsCG2->AddCut(pairCutsInvMgood);
- pairCutsCG2->AddCut(pairCutsCG);
- pairCuts = pairCutsCG2;
- }
- else {
- AliDielectronVarCuts* pairCutsV =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
- pairCutsV->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035,kTRUE);
- pairCuts = pairCutsV;
- }
- break;
- default: cout << "No Pair Cuts defined " << endl;
- }
- return pairCuts;
- }
-
-
- AliAnalysisCuts* GetPairCuts(Int_t cutSet) {
- AliAnalysisCuts* pairCuts=0x0;
- switch (cutSet) {
- case kPbPb2011TPCorTOF :
- case kpp2010TPCandTOF :
- AliDielectronVarCuts* pairCutsM=0x0;
- pairCutsM = new AliDielectronVarCuts("InvMass","InvMass > 150 MeV");
- pairCutsM->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE);
- pairCuts = pairCutsM;
- break;
- case kPbPb2011NoPID:
- case kPbPb2011TPCandTOF :
- case kPbPb2011TPC :
- case kPbPb2011TPCandTOFwide :
- case kPbPb2011TPCandTOFHPT:
- case kpp2010TPCorTOF :
-
- AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
- AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
- pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 2.0, 3.2);
- AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");
- pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.3);
- pairCutsCG->AddCut(pairCutsPhiv);
- pairCutsCG->AddCut(pairCutsInvM);
-
- pairCuts = pairCutsCG;
-
-
- //pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
- //pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035);
- break;
- default: cout << "No Pair Cuts defined " << endl;
- }
- return pairCuts;
- }
-
- AliAnalysisCuts* GetPairCutsInOut(Int_t cutSet){
- AliAnalysisCuts* pairCut=0x0;
- switch (cutSet) {
- case kPbPb2011RP:
- AliDielectronCutGroup* pairCutsPhiRP =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompOR);
- AliDielectronVarCuts* pairCutsPhi1 =new AliDielectronVarCuts("Phi Cuts","-pi/4<Phi<pi/4");
- pairCutsPhi1->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, (-1.0)*TMath::Pi()/4., TMath::Pi()/4.);
- AliDielectronVarCuts* pairCutsPhi2 =new AliDielectronVarCuts("Phi Cuts","3*pi/4<Phi");
- pairCutsPhi2->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, 3.0*TMath::Pi()/4., TMath::Pi());
- AliDielectronVarCuts* pairCutsPhi3 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi");
- pairCutsPhi3->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, (-1.0)*TMath::Pi(),(-3.0)*TMath::Pi()/4.);
-
- pairCutsPhiRP->AddCut(pairCutsPhi1);
- pairCutsPhiRP->AddCut(pairCutsPhi2);
- pairCutsPhiRP->AddCut(pairCutsPhi3);
-
- pairCuts = pairCutsPhiRP;
-
- break;
- case kPbPb2011Mag:
- AliDielectronCutGroup* pairCutsPhiMag=new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompOR);
- AliDielectronVarCuts* pairCutsPhi4 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi");
- pairCutsPhi4->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, TMath::Pi()/4.,3.0*TMath::Pi()/4.);
- AliDielectronVarCuts* pairCutsPhi5 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi");
- pairCutsPhi5->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2,(-3.0)*TMath::Pi()/4.,(-1.0)*TMath::Pi()/4.);
-
- pairCutsPhiMag->AddCut(pairCutsPhi4);
- pairCutsPhiMag->AddCut(pairCutsPhi5);
-
- pairCuts = pairCutsPhiMag;
- //pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
- //pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035);
- break;
- default: cout << "No Pair Cuts defined " << endl;
- }
- return pairCuts;
- }
-
-
- AliAnalysisCuts* GetPairCuts4(Int_t cutSet) {
- AliDielectronVarCuts* pairCuts=0x0;
- switch (cutSet) {
- case kPbPb2011MassLow :
- pairCuts = new AliDielectronVarCuts("InvMass","0 MeV < InvMass < 30 MeV");
- pairCuts->AddCut(AliDielectronVarManager::kM, 0.,0.03);
- break;
- case kPbPb2011MassMiddle :
- pairCuts = new AliDielectronVarCuts("InvMass","120 MeV < InvMass < 300 MeV");
- pairCuts->AddCut(AliDielectronVarManager::kM, 0.12,0.30);
- break;
- case kPbPb2011MassHigh :
- pairCuts = new AliDielectronVarCuts("InvMass","300 MeV < InvMass < 500 MeV");
- pairCuts->AddCut(AliDielectronVarManager::kM, 0.30,0.50);
- break;
- case kPbPb2011MassAll :
- pairCuts = new AliDielectronVarCuts("InvMass","0 GeV < InvMass < 10 GeV");
- pairCuts->AddCut(AliDielectronVarManager::kM, 0.0,10.0);
- break;
-
- default: cout << "No Pair Cuts defined " << endl;
- }
- return pairCuts;
- }
-
-
-
-
-
-
- AliAnalysisCuts* GetESDTrackCutsAna(Int_t cutSet) {
- AliESDtrackCuts* esdTrackCutsH = 0x0;
- switch (cutSet) {
- case kPbPb2011NoPID:
- case kPbPb2011TPCandTOF :
- case kPbPb2011TPCandTOFHPT:
- case kPbPb2011TPC :
- case kPbPb2011TPCandTOFwide :
- case kPbPb2011TPCorTOF :
- case kpp2010TPCandTOF :
- case kpp2010TPCorTOF :
- // standard cuts with very loose DCA: Bit4 (Int: 16), AOD095&115
-
- esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
- esdTrackCutsH->SetMaxDCAToVertexXY(2.4);
- esdTrackCutsH->SetMaxDCAToVertexZ(3.2);
- esdTrackCutsH->SetDCAToVertex2D(kTRUE);
- /*
-
- esdTrackCutsH = new AliESDtrackCuts();
- esdTrackCutsH->SetAcceptKinkDaughters(kFALSE);
- //Not done so far via dielectron cuts:
- */
- /*
- esdTrackCuts->SetDCAToVertex2D(kFALSE);
- esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
- esdTrackCuts->SetMaxChi2PerClusterITS(36);
- */
-
- break;
- default: cout << "No Analysis Track Cut defined " << endl;
- }
- return esdTrackCutsH;
- }
-
- AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet) {
- AliDielectronCutGroup* trackCuts=0x0;
- switch (cutSet) {
- case kPbPb2011NoPID:
- case kPbPb2011TPCandTOF :
- case kPbPb2011TPCandTOFHPT:
- case kPbPb2011TPC :
- case kPbPb2011TPCandTOFwide :
- case kPbPb2011TPCorTOF :
- case kpp2010TPCandTOF :
- case kpp2010TPCorTOF :
- trackCuts = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
-
- AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD");
- trackCutsAOD->AddCut(AliDielectronVarManager::kPt,0.05,6.);
- trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84);
- //DCA Cut
- trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
- trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
- trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0);
- trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 3.5);
- AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel");
- trackCutsDiel->SetAODFilterBit(16); //does nothing for ESDs
- trackCutsDiel->SetRequireITSRefit(kTRUE);
- trackCutsDiel->SetRequireTPCRefit(kTRUE);
-
- trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
- //trackCutsAOD->AddCut(AliDielectronVarManager::kNclsTPC, 80., 140.0);
- trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 110.0, 160.0);
- trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.0);//tighter than before,
- //due to AOD production
- trackCuts->AddCut(trackCutsDiel);
- trackCuts->AddCut(trackCutsAOD);
- break;
- default: cout << "No Analysis Track Cut defined " << endl;
- }
- return trackCuts;
- }
-
- AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet) {
- AliESDtrackCuts* trackCuts=0x0;
- switch (cutSet) {
- case kPbPb2011NoPID:
- case kPbPb2011TPCandTOF :
- case kPbPb2011TPCandTOFHPT:
- case kPbPb2011TPCorTOF :
- case kpp2010TPCandTOF :
- case kpp2010TPCorTOF :
- /*
- trackCuts = new AliESDtrackCuts();
- trackCuts->SetDCAToVertex2D(kTRUE);
- trackCuts->SetMaxDCAToVertexZ(3.0);
- trackCuts->SetMaxDCAToVertexXY(1.0);
- trackCuts->SetEtaRange( -0.84 , 0.84 );
- trackCuts->SetPtRange( 0.05 , 0.5);
- trackCuts->SetAcceptKinkDaughters(kFALSE);
- trackCuts->SetRequireITSRefit(kTRUE);
- trackCuts->SetRequireITSStandAlone(kTRUE);
- trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
- trackCuts->SetMinNClustersITS(3); //PhotonGroup-Dalitz: 2?!
- */
- cout << "No Pre-Track Cut defined for AODs at the moment " << endl;
- break;
- default: cout << "No Pre-Track Cut defined " << endl;
- }
- return trackCuts;
- }
-
-};
-
-
-
+class LMEECutLibAsako {\r
+\r
+public:\r
+ static enum LMMECutSet {\r
+ kPbPb2011NoPID,\r
+ kPbPb2011TPCandTOF,\r
+ kPbPb2011TPCandTOFHPT,\r
+ kPbPb2011TPC, //TOF required, more relaxed cut on TPC\r
+ kPbPb2011TPCandTOFwide, //TOF required, more relaxed cut on TPC\r
+ kPbPb2011TPCorTOF,\r
+ kpp2010TPCandTOF,\r
+ kpp2010TPCorTOF,\r
+ kCUTSETMAX\r
+ };\r
+\r
+ static enum LMMECentSel {\r
+ kPbPb2011Central,\r
+ kPbPb2011SemiCentral1,\r
+ kPbPb2011SemiCentral2,\r
+ kPbPb2011Peripheral,\r
+ kCENTSELMAX\r
+ };\r
+\r
+ static enum LMEEPairCutSet{\r
+ kPbPb2011RP,\r
+ kPbPb2011Mag,\r
+ //kPbPb2011RPxy,\r
+ //kPbPb2011RPxz,\r
+\r
+ kPbPb2011MassLow,\r
+ kPbPb2011MassMiddle,\r
+ kPbPb2011MassHigh,\r
+ kPbPb2011MassAll,\r
+\r
+\r
+\r
+ kPAIRCUTSETMAX\r
+ };\r
+\r
+ //char* LMEECutNames[kCUTSETMAX] = { "PbPb2011TPCandTOF","PbPb2011TPCorTOF"};\r
+\r
+\r
+ LMEECutLib() {}\r
+\r
+ AliDielectronEventCuts* GetEventCuts(Int_t cutSet);\r
+ AliAnalysisCuts* GetCentralityCuts(Int_t centSel);\r
+ AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet);\r
+ AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet);\r
+\r
+ AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet); \r
+ AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet); \r
+\r
+ AliAnalysisCuts* GetPairCuts2(Int_t cutSet,Bool_t tooglePC=kFALSE);\r
+ AliAnalysisCuts* GetPairCuts(Int_t cutSet); \r
+\r
+ AliAnalysisCuts* GetPairCutsInOut(Int_t cutSet);\r
+ AliAnalysisCuts* GetPairCuts4(Int_t cutSet);\r
+\r
+ AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet); \r
+ AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet); \r
+\r
+\r
+\r
+\r
+ AliDielectronEventCuts* GetEventCuts(Int_t cutSet) {\r
+ AliDielectronEventCuts* eventCuts = 0x0;\r
+ switch (cutSet) {\r
+ case kPbPb2011NoPID:\r
+ case kPbPb2011TPCandTOF :\r
+ case kPbPb2011TPCandTOFHPT:\r
+ case kPbPb2011TPC :\r
+ case kPbPb2011TPCandTOFwide :\r
+ case kPbPb2011TPCorTOF :\r
+ case kpp2010TPCandTOF :\r
+ case kpp2010TPCorTOF :\r
+ eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0");\r
+ eventCuts->SetVertexType(AliDielectronEventCuts::kVtxSPD); // AOD\r
+ //eventCuts->SetVertexType(AliDielectronEventCuts::kVtxTPC); // AOD\r
+ // eventCuts->SetCentralityRange(0.0,80.0);\r
+ eventCuts->SetRequireVertex();\r
+ eventCuts->SetMinVtxContributors(1);\r
+ eventCuts->SetVertexZ(-10.,10.);\r
+ break;\r
+ default: cout << "No Event Cut defined" << endl;\r
+ }\r
+ return eventCuts;\r
+ }\r
+\r
+ AliAnalysisCuts* GetCentralityCuts(Int_t centSel) {\r
+ AliDielectronVarCuts* centCuts = 0x0;\r
+ switch (centSel) {\r
+ case kPbPb2011Central:\r
+ centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Central");\r
+ centCuts->AddCut(AliDielectronVarManager::kCentrality,0.,10.);\r
+ break;\r
+ case kPbPb2011SemiCentral1:\r
+ centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral1");\r
+ //Restrict to 50%, Trigger selction\r
+ centCuts->AddCut(AliDielectronVarManager::kCentrality,10.,30.);\r
+ break;\r
+ case kPbPb2011SemiCentral2:\r
+ centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral2");\r
+ //Restrict to 50%, Trigger selction\r
+ centCuts->AddCut(AliDielectronVarManager::kCentrality,30.,50.);//\r
+ break;\r
+ case kPbPb2011Peripheral:\r
+ centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Peripheral");\r
+ centCuts->AddCut(AliDielectronVarManager::kCentrality,50.,90.);\r
+ break;\r
+ default: cout << "No Centrality selected" << endl;\r
+ }\r
+ return centCuts;\r
+ }\r
+\r
+\r
+ AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet) {\r
+ AliDielectronTrackRotator* trackRotator = 0x0;\r
+ switch (cutSet) {\r
+ case kPbPb2011NoPID:\r
+ case kPbPb2011TPCandTOF :\r
+ case kPbPb2011TPCandTOFHPT:\r
+ case kPbPb2011TPC :\r
+ case kPbPb2011TPCandTOFwide :\r
+ case kPbPb2011TPCorTOF :\r
+ case kpp2010TPCandTOF :\r
+ case kpp2010TPCorTOF :\r
+ trackRotator = new AliDielectronTrackRotator();\r
+ trackRotator->SetIterations(20);\r
+ trackRotator->SetConeAnglePhi(TMath::Pi()/180*165);\r
+ trackRotator->SetStartAnglePhi(TMath::Pi());\r
+ break;\r
+ default: cout << "No Rotator defined" << endl;\r
+ }\r
+ return trackRotator;\r
+ }\r
+\r
+\r
+ AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet) {\r
+ AliDielectronMixingHandler* mixingHandler = 0x0;\r
+ switch (cutSet) {\r
+ case kPbPb2011TPCorTOF :\r
+ /*\r
+ mixingHandler = new AliDielectronMixingHandler;\r
+ mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");\r
+ mixingHandler->AddVariable(AliDielectronVarManager::kCentrality,"0,5,10,20,40,80");\r
+ mixingHandler->SetDepth(25);\r
+ mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);\r
+ break;\r
+ */\r
+ case kPbPb2011NoPID:\r
+ case kPbPb2011TPCandTOF :\r
+ case kPbPb2011TPCandTOFHPT:\r
+ case kPbPb2011TPC :\r
+ case kPbPb2011TPCandTOFwide :\r
+ mixingHandler = new AliDielectronMixingHandler;\r
+ mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");\r
+ mixingHandler->AddVariable(AliDielectronVarManager::kCentrality,"0,5,10,20,40,80");\r
+ mixingHandler->AddVariable(AliDielectronVarManager::kv0ACrpH2,"-6*(TMath::Pi()/6),-5*(TMath::Pi()/6),-4*(TMath::Pi()/6),-3*(TMath::Pi()/6),-2*(TMath::Pi()/6),-1*(TMath::Pi()/6),0,1*(TMath::Pi()/6),2*(TMath::Pi()/6),3*(TMath::Pi()/6),4*(TMath::Pi()/6),5*(TMath::Pi()/6),6*(TMath::Pi()/6)");\r
+ mixingHandler->SetDepth(50);\r
+ //mixingHandler->SetDepth(15);\r
+ mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);\r
+ break;\r
+ case kpp2010TPCandTOF :\r
+ case kpp2010TPCorTOF :\r
+ mixingHandler = new AliDielectronMixingHandler;\r
+ mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");\r
+ mixingHandler->AddVariable(AliDielectronVarManager::kNacc,"0,10000");\r
+ //might want to add multiplicity?\r
+ mixingHandler->SetDepth(50);\r
+ mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);\r
+ break;\r
+ default: cout << "No Rotator defined" << endl;\r
+ }\r
+ return mixingHandler;\r
+ }\r
+\r
+\r
+ AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet) {\r
+ AliAnalysisCuts* anaCuts=0x0;\r
+\r
+ // + [2] added for Dec2010 Cut! \r
+ TF1 *lowerCut = new TF1("lowerCut", "[0] * TMath::Exp([1]*x) + [2]", 0, 20);\r
+ /* until Nov2010\r
+ lowerCut->SetParameter(0, -2.7);\r
+ lowerCut->SetParameter(1, -0.4357);\r
+ */\r
+ /* 18.01.2011 ALiHFEpid.cxx */\r
+ lowerCut->SetParameter(0,-3.7);\r
+ lowerCut->SetParameter(1,-0.8);\r
+ lowerCut->SetParameter(2,-0.35);\r
+\r
+ if (MCenabled) { //overwrite parameters\r
+ lowerCut->SetParameter(0,-2.5);\r
+ lowerCut->SetParameter(2,-2.2);\r
+ }\r
+\r
+ //---------------------------------------------\r
+ AliDielectronPID *pidTPCTOFeOnly = new AliDielectronPID("TPC-TOF","TPC-TOF");\r
+ pidTPCTOFeOnly->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3,3.,0.0,100.,kFALSE);\r
+ pidTPCTOFeOnly->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE );\r
+\r
+\r
+ AliDielectronPID *pidTPCandTOF = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE");\r
+ pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE);\r
+ pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);\r
+ pidTPCandTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE );\r
+\r
+ AliDielectronPID *pidTPChardTOF = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE");\r
+ pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,lowerCut,3.,0.0,100.,kFALSE);\r
+ pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE);\r
+ pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,100.,kTRUE);\r
+ pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,100.,kTRUE);\r
+ pidTPChardTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE );\r
+ //___________________________________________\r
+ AliDielectronPID *pidTT = new AliDielectronPID("TPC-TOF","TPC-TOF");\r
+ pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5,3.,0.2,0.4,kFALSE);\r
+ pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3,3.,0.4,100.,kFALSE);\r
+ pidTT->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.2 , 100., kFALSE );\r
+\r
+ pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE);\r
+ pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,100.,kTRUE);\r
+ pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,100.,kTRUE);\r
+ //___________________________________________\r
+ AliDielectronVarCuts *pidTPCsignal = new AliDielectronVarCuts("pidTPCsignal","cut on the TPC signal");\r
+ if (MCenabled) {\r
+ pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,65.,85.); \r
+ }\r
+ else {\r
+ pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,75.,90.); \r
+ }\r
+ //___________________________________________\r
+\r
+ AliDielectronVarCuts *pidTPCsignalWide = new AliDielectronVarCuts("pidTPCsignalWide","cut on the TPC signal");\r
+ pidTPCsignalWide->AddCut(AliDielectronVarManager::kTPCsignal,75.,90.);\r
+\r
+\r
+ AliDielectronVarCuts *pTPCHPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt");\r
+ pTPCHPT->AddCut(AliDielectronVarManager::kPt,.4,3.0);\r
+\r
+ AliDielectronVarCuts *pTPC = new AliDielectronVarCuts("P>.4","P>.4");\r
+ pTPC->AddCut(AliDielectronVarManager::kPt,.4,2.0);\r
+ \r
+ AliDielectronVarCuts *pMin = new AliDielectronVarCuts("P>.2","P>.2");\r
+ pMin->AddCut(AliDielectronVarManager::kPt,.2,2.5);\r
+\r
+ switch (cutSet) {\r
+ case kPbPb2011NoPID:\r
+ AliDielectronCutGroup* cgSecondTrackFilterNoPID = new AliDielectronCutGroup("cgNoPID","cgNoPID",AliDielectronCutGroup::kCompAND);\r
+ cgSecondTrackFilterNoPID->AddCut(pTPC);\r
+ anaCuts= cgSecondTrackFilterNoPID;\r
+ break;\r
+ case kPbPb2011TPCandTOFHPT:\r
+ AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);\r
+ cgSecondTrackFilterPIDTPC1->AddCut(pTPCHPT);\r
+ cgSecondTrackFilterPIDTPC1->AddCut(pidTPCTOFeOnly);\r
+ cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal);\r
+ anaCuts = cgSecondTrackFilterPIDTPC1;\r
+\r
+ case kPbPb2011TPCandTOF :\r
+ AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);\r
+ cgSecondTrackFilterPIDTPC1->AddCut(pTPC);\r
+ //cgSecondTrackFilterPIDTPC1->AddCut(pidTPChardTOF);\r
+ // cgSecondTrackFilterPIDTPC1->AddCut(pidTPCTOFeOnly);\r
+ cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF);\r
+ cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal);\r
+ anaCuts = cgSecondTrackFilterPIDTPC1;\r
+ break;\r
+\r
+ case kPbPb2011TPC :\r
+ AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);\r
+ cgSecondTrackFilterPIDTPC1->AddCut(pTPC);\r
+ cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignalWide);\r
+ anaCuts = cgSecondTrackFilterPIDTPC1;\r
+ break;\r
+ \r
+ case kPbPb2011TPCandTOFwide :\r
+ AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);\r
+ cgSecondTrackFilterPIDTPC1->AddCut(pTPC);\r
+ cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF);\r
+ cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignalWide);\r
+ anaCuts = cgSecondTrackFilterPIDTPC1;\r
+ break;\r
+\r
+ case kPbPb2011TPCorTOF :\r
+ AliDielectronCutGroup* cgSecondTrackFilterPIDTPC2 = new AliDielectronCutGroup("cgPIDTPC2","cgPIDTPC2",AliDielectronCutGroup::kCompAND);\r
+ cgSecondTrackFilterPIDTPC2->AddCut(pMin);\r
+ cgSecondTrackFilterPIDTPC2->AddCut(pidTT);\r
+ cgSecondTrackFilterPIDTPC2->AddCut(pidTPCsignal);\r
+ anaCuts = cgSecondTrackFilterPIDTPC2;\r
+ break;\r
+\r
+ case kpp2010TPCandTOF :\r
+ AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);\r
+ cgSecondTrackFilterPIDTPC->AddCut(pTPC);\r
+ //cgSecondTrackFilterPIDTPC->AddCut(pidTPChardTOF);\r
+ cgSecondTrackFilterPIDTPC->AddCut(pidTPCTOFeOnly);\r
+ anaCuts = cgSecondTrackFilterPIDTPC;\r
+ break;\r
+ case kpp2010TPCorTOF :\r
+ AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);\r
+ cgSecondTrackFilterPIDTPC->AddCut(pMin);\r
+ cgSecondTrackFilterPIDTPC->AddCut(pidTT);\r
+ anaCuts = cgSecondTrackFilterPIDTPC;\r
+ break;\r
+ default: cout << "No Analysis PID Cut defined " << endl;\r
+ }\r
+ return anaCuts;\r
+ }\r
+\r
+ AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet) {\r
+ AliAnalysisCuts* anaCuts=0x0;\r
+ switch (cutSet) {\r
+ case kPbPb2011NoPID:\r
+ case kPbPb2011TPCandTOF :\r
+ case kPbPb2011TPCandTOFHPT:\r
+ case kPbPb2011TPC :\r
+ case kPbPb2011TPCandTOFwide :\r
+ case kPbPb2011TPCorTOF :\r
+ case kpp2010TPCandTOF :\r
+ case kpp2010TPCorTOF :\r
+ AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);\r
+ AliDielectronCutGroup* cgITSTPC = new AliDielectronCutGroup("cgITSTPC","cgITSTPC",AliDielectronCutGroup::kCompAND);\r
+ AliDielectronPID *pidITSTPC = new AliDielectronPID("TPCpre","TPCpre");\r
+ pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);\r
+ cgITSTPC->AddCut(pidITSTPC);\r
+\r
+\r
+ AliDielectronCutGroup* cgITSSA = new AliDielectronCutGroup("cgITSSA","cgITSSA",AliDielectronCutGroup::kCompAND);\r
+ AliDielectronPID *pidITSSA = new AliDielectronPID("pidITSSA","pidITSSA");\r
+ pidITSSA->AddCut(AliDielectronPID::kITS,AliPID::kElectron,-3.,3.);\r
+ cgITSSA->AddCut(pidITSSA);\r
+ // cgITSSA->AddCut(GetTrackCutsPre(cutSet));\r
+\r
+ AliDielectronCutGroup* cgInitialTrackFilter = new AliDielectronCutGroup("cgInitialTrackFilter","cgInitialTrackFilter",AliDielectronCutGroup::kCompOR);\r
+ cgInitialTrackFilter->AddCut(cgITSTPC);\r
+ cgInitialTrackFilter->AddCut(cgITSSA);\r
+ anaCuts = cgInitialTrackFilter;\r
+ break;\r
+ default: cout << "No Pre-PID Cut defined " << endl;\r
+ }\r
+ return anaCuts;\r
+ }\r
+\r
+\r
+\r
+ AliAnalysisCuts* GetPairCuts2(Int_t cutSet, Bool_t togglePC /*=kFALSE*/) {\r
+ AliAnalysisCuts* pairCuts=0x0;\r
+ switch (cutSet) {\r
+ case kPbPb2011TPCorTOF :\r
+ case kpp2010TPCandTOF :\r
+ AliDielectronVarCuts* pairCutsV= new AliDielectronVarCuts("InvMass","InvMass > 150 MeV");\r
+ pairCutsV->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE);\r
+ pairCuts = pairCutsV;\r
+ break;\r
+ case kPbPb2011NoPID:\r
+ case kPbPb2011TPCandTOF :\r
+ case kPbPb2011TPC :\r
+ case kPbPb2011TPCandTOFHPT:\r
+ case kPbPb2011TPCandTOFwide :\r
+ case kpp2010TPCorTOF :\r
+ if (!togglePC) {\r
+\r
+ AliDielectronCutGroup* pairCutsCG2 =new AliDielectronCutGroup("pairCutsCG2","pairCutsCG2",AliDielectronCutGroup::kCompOR);\r
+ AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);\r
+ pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");\r
+ pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 0.0, 2.0); \r
+ pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");\r
+ pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.3); \r
+ pairCutsInvMgood =new AliDielectronVarCuts("InvM Cuts good","InvM>0.3");\r
+ pairCutsInvMgood->AddCut(AliDielectronVarManager::kM, 0.3, 99999.); \r
+ pairCutsCG->AddCut(pairCutsPhiv);\r
+ pairCutsCG->AddCut(pairCutsInvM);\r
+ pairCutsCG2->AddCut(pairCutsInvMgood);\r
+ pairCutsCG2->AddCut(pairCutsCG);\r
+ pairCuts = pairCutsCG2;\r
+ }\r
+ else {\r
+ AliDielectronVarCuts* pairCutsV =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");\r
+ pairCutsV->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035,kTRUE);\r
+ pairCuts = pairCutsV;\r
+ }\r
+ break;\r
+ default: cout << "No Pair Cuts defined " << endl;\r
+ }\r
+ return pairCuts;\r
+ }\r
+\r
+\r
+ AliAnalysisCuts* GetPairCuts(Int_t cutSet) { \r
+ AliAnalysisCuts* pairCuts=0x0;\r
+ switch (cutSet) {\r
+ case kPbPb2011TPCorTOF :\r
+ case kpp2010TPCandTOF :\r
+ AliDielectronVarCuts* pairCutsM=0x0;\r
+ pairCutsM = new AliDielectronVarCuts("InvMass","InvMass > 150 MeV");\r
+ pairCutsM->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE);\r
+ pairCuts = pairCutsM;\r
+ break;\r
+ case kPbPb2011NoPID:\r
+ case kPbPb2011TPCandTOF :\r
+ case kPbPb2011TPC :\r
+ case kPbPb2011TPCandTOFwide :\r
+ case kPbPb2011TPCandTOFHPT:\r
+ case kpp2010TPCorTOF :\r
+\r
+ AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);\r
+ AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");\r
+ pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 2.0, 3.2); \r
+ AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");\r
+ pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.3); \r
+ pairCutsCG->AddCut(pairCutsPhiv);\r
+ pairCutsCG->AddCut(pairCutsInvM);\r
+\r
+ pairCuts = pairCutsCG;\r
+\r
+\r
+ //pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");\r
+ //pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035);\r
+ break;\r
+ default: cout << "No Pair Cuts defined " << endl;\r
+ } \r
+ return pairCuts;\r
+ }\r
+\r
+ AliAnalysisCuts* GetPairCutsInOut(Int_t cutSet){\r
+ AliAnalysisCuts* pairCut=0x0;\r
+ switch (cutSet) {\r
+ case kPbPb2011RP:\r
+ AliDielectronCutGroup* pairCutsPhiRP =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompOR);\r
+ AliDielectronVarCuts* pairCutsPhi1 =new AliDielectronVarCuts("Phi Cuts","-pi/4<Phi<pi/4");\r
+ pairCutsPhi1->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, (-1.0)*TMath::Pi()/4., TMath::Pi()/4.);\r
+ AliDielectronVarCuts* pairCutsPhi2 =new AliDielectronVarCuts("Phi Cuts","3*pi/4<Phi");\r
+ pairCutsPhi2->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, 3.0*TMath::Pi()/4., TMath::Pi());\r
+ AliDielectronVarCuts* pairCutsPhi3 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi");\r
+ pairCutsPhi3->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, (-1.0)*TMath::Pi(),(-3.0)*TMath::Pi()/4.);\r
+\r
+ pairCutsPhiRP->AddCut(pairCutsPhi1);\r
+ pairCutsPhiRP->AddCut(pairCutsPhi2);\r
+ pairCutsPhiRP->AddCut(pairCutsPhi3);\r
+\r
+ pairCuts = pairCutsPhiRP;\r
+\r
+ break;\r
+ case kPbPb2011Mag:\r
+ AliDielectronCutGroup* pairCutsPhiMag=new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompOR);\r
+ AliDielectronVarCuts* pairCutsPhi4 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi");\r
+ pairCutsPhi4->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, TMath::Pi()/4.,3.0*TMath::Pi()/4.);\r
+ AliDielectronVarCuts* pairCutsPhi5 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi");\r
+ pairCutsPhi5->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2,(-3.0)*TMath::Pi()/4.,(-1.0)*TMath::Pi()/4.);\r
+\r
+ pairCutsPhiMag->AddCut(pairCutsPhi4);\r
+ pairCutsPhiMag->AddCut(pairCutsPhi5);\r
+ \r
+ pairCuts = pairCutsPhiMag;\r
+ //pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");\r
+ //pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035);\r
+ break;\r
+ default: cout << "No Pair Cuts defined " << endl;\r
+ }\r
+ return pairCuts;\r
+ }\r
+\r
+\r
+ AliAnalysisCuts* GetPairCuts4(Int_t cutSet) {\r
+ AliDielectronVarCuts* pairCuts=0x0;\r
+ switch (cutSet) {\r
+ case kPbPb2011MassLow :\r
+ pairCuts = new AliDielectronVarCuts("InvMass","0 MeV < InvMass < 30 MeV");\r
+ pairCuts->AddCut(AliDielectronVarManager::kM, 0.,0.03);\r
+ break;\r
+ case kPbPb2011MassMiddle :\r
+ pairCuts = new AliDielectronVarCuts("InvMass","120 MeV < InvMass < 300 MeV");\r
+ pairCuts->AddCut(AliDielectronVarManager::kM, 0.12,0.30);\r
+ break;\r
+ case kPbPb2011MassHigh :\r
+ pairCuts = new AliDielectronVarCuts("InvMass","300 MeV < InvMass < 500 MeV");\r
+ pairCuts->AddCut(AliDielectronVarManager::kM, 0.30,0.50);\r
+ break;\r
+ case kPbPb2011MassAll :\r
+ pairCuts = new AliDielectronVarCuts("InvMass","0 GeV < InvMass < 10 GeV");\r
+ pairCuts->AddCut(AliDielectronVarManager::kM, 0.0,10.0);\r
+ break;\r
+\r
+ default: cout << "No Pair Cuts defined " << endl;\r
+ }\r
+ return pairCuts;\r
+ }\r
+\r
+\r
+\r
+\r
+\r
+\r
+ AliAnalysisCuts* GetESDTrackCutsAna(Int_t cutSet) {\r
+ AliESDtrackCuts* esdTrackCutsH = 0x0;\r
+ switch (cutSet) {\r
+ case kPbPb2011NoPID:\r
+ case kPbPb2011TPCandTOF :\r
+ case kPbPb2011TPCandTOFHPT:\r
+ case kPbPb2011TPC :\r
+ case kPbPb2011TPCandTOFwide :\r
+ case kPbPb2011TPCorTOF :\r
+ case kpp2010TPCandTOF :\r
+ case kpp2010TPCorTOF :\r
+ // standard cuts with very loose DCA: Bit4 (Int: 16), AOD095&115\r
+ \r
+ esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE); \r
+ esdTrackCutsH->SetMaxDCAToVertexXY(2.4);\r
+ esdTrackCutsH->SetMaxDCAToVertexZ(3.2);\r
+ esdTrackCutsH->SetDCAToVertex2D(kTRUE);\r
+ /* \r
+\r
+ esdTrackCutsH = new AliESDtrackCuts();\r
+ esdTrackCutsH->SetAcceptKinkDaughters(kFALSE);\r
+ //Not done so far via dielectron cuts:\r
+ */\r
+ /*\r
+ esdTrackCuts->SetDCAToVertex2D(kFALSE);\r
+ esdTrackCuts->SetRequireSigmaToVertex(kFALSE);\r
+ esdTrackCuts->SetMaxChi2PerClusterITS(36);\r
+ */\r
+\r
+ break;\r
+ default: cout << "No Analysis Track Cut defined " << endl;\r
+ }\r
+ return esdTrackCutsH;\r
+ } \r
+\r
+ AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet) {\r
+ AliDielectronCutGroup* trackCuts=0x0;\r
+ switch (cutSet) {\r
+ case kPbPb2011NoPID:\r
+ case kPbPb2011TPCandTOF :\r
+ case kPbPb2011TPCandTOFHPT:\r
+ case kPbPb2011TPC :\r
+ case kPbPb2011TPCandTOFwide :\r
+ case kPbPb2011TPCorTOF :\r
+ case kpp2010TPCandTOF :\r
+ case kpp2010TPCorTOF :\r
+ trackCuts = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);\r
+\r
+ AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD");\r
+ trackCutsAOD->AddCut(AliDielectronVarManager::kPt,0.05,6.);\r
+ trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84);\r
+ //DCA Cut\r
+ trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);\r
+ trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);\r
+ trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0);\r
+ trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 3.5);\r
+ AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel");\r
+ trackCutsDiel->SetAODFilterBit(16); //does nothing for ESDs\r
+ trackCutsDiel->SetRequireITSRefit(kTRUE);\r
+ trackCutsDiel->SetRequireTPCRefit(kTRUE);\r
+\r
+ trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);\r
+ //trackCutsAOD->AddCut(AliDielectronVarManager::kNclsTPC, 80., 140.0);\r
+ trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 110.0, 160.0);\r
+ trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.0);//tighter than before,\r
+ //due to AOD production\r
+ trackCuts->AddCut(trackCutsDiel);\r
+ trackCuts->AddCut(trackCutsAOD);\r
+ break;\r
+ default: cout << "No Analysis Track Cut defined " << endl;\r
+ }\r
+ return trackCuts;\r
+ } \r
+\r
+ AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet) {\r
+ AliESDtrackCuts* trackCuts=0x0;\r
+ switch (cutSet) {\r
+ case kPbPb2011NoPID:\r
+ case kPbPb2011TPCandTOF :\r
+ case kPbPb2011TPCandTOFHPT:\r
+ case kPbPb2011TPCorTOF :\r
+ case kpp2010TPCandTOF :\r
+ case kpp2010TPCorTOF :\r
+ /*\r
+ trackCuts = new AliESDtrackCuts();\r
+ trackCuts->SetDCAToVertex2D(kTRUE);\r
+ trackCuts->SetMaxDCAToVertexZ(3.0);\r
+ trackCuts->SetMaxDCAToVertexXY(1.0);\r
+ trackCuts->SetEtaRange( -0.84 , 0.84 );\r
+ trackCuts->SetPtRange( 0.05 , 0.5);\r
+ trackCuts->SetAcceptKinkDaughters(kFALSE);\r
+ trackCuts->SetRequireITSRefit(kTRUE);\r
+ trackCuts->SetRequireITSStandAlone(kTRUE);\r
+ trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);\r
+ trackCuts->SetMinNClustersITS(3); //PhotonGroup-Dalitz: 2?!\r
+ */\r
+ cout << "No Pre-Track Cut defined for AODs at the moment " << endl;\r
+ break;\r
+ default: cout << "No Pre-Track Cut defined " << endl;\r
+ }\r
+ return trackCuts;\r
+ }\r
+\r
+};\r
+\r
+\r