]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
update from Asako's tasks
authortgunji <Taku.Gunji@cern.ch>
Wed, 15 Jan 2014 11:01:02 +0000 (12:01 +0100)
committertgunji <Taku.Gunji@cern.ch>
Wed, 15 Jan 2014 11:01:02 +0000 (12:01 +0100)
PWGDQ/dielectron/macrosLMEE/AddTask_Asako_LMEEPbPb2011AODCent.C
PWGDQ/dielectron/macrosLMEE/AddTask_Asako_LMEEPbPb2011AODPeri.C
PWGDQ/dielectron/macrosLMEE/AddTask_Asako_LMEEPbPb2011AODSemi1.C
PWGDQ/dielectron/macrosLMEE/AddTask_Asako_LMEEPbPb2011AODSemi2.C
PWGDQ/dielectron/macrosLMEE/ConfigAsakoLMEEPbPb2011AOD.C
PWGDQ/dielectron/macrosLMEE/LMEECutLibAsako.C

index 00bf4430e310512d6f0225bd9bade3645be8ef50..0c6140a79a3fd35cc11a4acceb3d5503349334e6 100644 (file)
-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
index 2b416b06547c6b31bd501a96d1d475c60132bcc5..9b8d0c7be42c54e3bb54fe5910ed41e0d8dd98e4 100644 (file)
-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
index dde73acb43b1c67f0564d51542ced17995d1a152..bfcbbfa9d90be285a4e06bbcdf60a590afded0bb 100644 (file)
-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
index 17ae6c81e0d24a53b8c211f9fb5f83d33b877ecf..0ca61cbf506c06d2dee07f6346e0b5e7f30e7c50 100644 (file)
-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
index cad562a239732166cf2ecd60bae139d4a580daa4..6ac4f8f1991360e387bc3db31841ac2569329c90 100644 (file)
-//#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
index 81e910941ec3be3dd7964a81b01b6b1f6dc2e2fb..fb83b7b334297dd17aae4f379bc8a03d20492afa 100644 (file)
-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