ROOT logo
AliAnalysisTask *AddTaskJPSIFilter(){
  //get the current analysis manager
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTaskJPSIFilter", "No analysis manager found.");
    return 0;
  }
  
  //check for output aod handler
  if (!mgr->GetOutputEventHandler()||mgr->GetOutputEventHandler()->IsA()!=AliAODHandler::Class()) {
    Warning("AddTaskJPSIFilter","No AOD output handler available. Not adding the task!");
    return 0;
  }

  //Do we have an MC handler?
  Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
  
  //Do we run on AOD?
  Bool_t isAOD=mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();

  if(isAOD) {
    //add options to AliAODHandler to duplicate input event
    AliAODHandler *aodHandler = (AliAODHandler*)mgr->GetOutputEventHandler();
    aodHandler->SetCreateNonStandardAOD();
    aodHandler->SetNeedsHeaderReplication();
    aodHandler->SetNeedsTracksBranchReplication();
    aodHandler->SetNeedsVerticesBranchReplication();
    aodHandler->SetNeedsV0sBranchReplication();
    aodHandler->SetNeedsCascadesBranchReplication();
    aodHandler->SetNeedsTrackletsBranchReplication();
    aodHandler->SetNeedsPMDClustersBranchReplication();
    aodHandler->SetNeedsJetsBranchReplication();
    aodHandler->SetNeedsFMDClustersBranchReplication();
    aodHandler->SetNeedsCaloClustersBranchReplication();
    //aodHandler->SetNeedsMCParticlesBranchReplication();
    aodHandler->SetNeedsDimuonsBranchReplication();
    if(hasMC) aodHandler->SetNeedsMCParticlesBranchReplication();
  }
  
  //Create task and add it to the analysis manager
  AliAnalysisTaskDielectronFilter *task=new AliAnalysisTaskDielectronFilter("jpsi_DielectronFilter");
  
  gROOT->LoadMacro("$ALICE_ROOT/PWGDQ/dielectron/macros/ConfigJpsi2eeFilterPbPb.C");
  AliDielectron *jpsi=ConfigJpsi2eeFilter(isAOD);
  if (!hasMC) task->UsePhysicsSelection();
  task->SetDielectron(jpsi);
  mgr->AddTask(task);

  //----------------------
  //create data containers
  //----------------------
  
  
  TString containerName = mgr->GetCommonFileName();
  containerName += ":PWGDQ_dielectronFilter";
  
  //create output container
  
  AliAnalysisDataContainer *cOutputHist1 =
    mgr->CreateContainer("jpsi_FilterQA",
                         THashList::Class(),
                         AliAnalysisManager::kOutputContainer,
                         containerName.Data());
  
  AliAnalysisDataContainer *cOutputHist2 =
    mgr->CreateContainer("jpsi_FilterEventStat",
                         TH1D::Class(),
                         AliAnalysisManager::kOutputContainer,
                         containerName.Data());
  
  
  mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput(task, 1, cOutputHist1);
  mgr->ConnectOutput(task, 2, cOutputHist2);
  
  return task;
}
 AddTaskJPSIFilterPbPb.C:1
 AddTaskJPSIFilterPbPb.C:2
 AddTaskJPSIFilterPbPb.C:3
 AddTaskJPSIFilterPbPb.C:4
 AddTaskJPSIFilterPbPb.C:5
 AddTaskJPSIFilterPbPb.C:6
 AddTaskJPSIFilterPbPb.C:7
 AddTaskJPSIFilterPbPb.C:8
 AddTaskJPSIFilterPbPb.C:9
 AddTaskJPSIFilterPbPb.C:10
 AddTaskJPSIFilterPbPb.C:11
 AddTaskJPSIFilterPbPb.C:12
 AddTaskJPSIFilterPbPb.C:13
 AddTaskJPSIFilterPbPb.C:14
 AddTaskJPSIFilterPbPb.C:15
 AddTaskJPSIFilterPbPb.C:16
 AddTaskJPSIFilterPbPb.C:17
 AddTaskJPSIFilterPbPb.C:18
 AddTaskJPSIFilterPbPb.C:19
 AddTaskJPSIFilterPbPb.C:20
 AddTaskJPSIFilterPbPb.C:21
 AddTaskJPSIFilterPbPb.C:22
 AddTaskJPSIFilterPbPb.C:23
 AddTaskJPSIFilterPbPb.C:24
 AddTaskJPSIFilterPbPb.C:25
 AddTaskJPSIFilterPbPb.C:26
 AddTaskJPSIFilterPbPb.C:27
 AddTaskJPSIFilterPbPb.C:28
 AddTaskJPSIFilterPbPb.C:29
 AddTaskJPSIFilterPbPb.C:30
 AddTaskJPSIFilterPbPb.C:31
 AddTaskJPSIFilterPbPb.C:32
 AddTaskJPSIFilterPbPb.C:33
 AddTaskJPSIFilterPbPb.C:34
 AddTaskJPSIFilterPbPb.C:35
 AddTaskJPSIFilterPbPb.C:36
 AddTaskJPSIFilterPbPb.C:37
 AddTaskJPSIFilterPbPb.C:38
 AddTaskJPSIFilterPbPb.C:39
 AddTaskJPSIFilterPbPb.C:40
 AddTaskJPSIFilterPbPb.C:41
 AddTaskJPSIFilterPbPb.C:42
 AddTaskJPSIFilterPbPb.C:43
 AddTaskJPSIFilterPbPb.C:44
 AddTaskJPSIFilterPbPb.C:45
 AddTaskJPSIFilterPbPb.C:46
 AddTaskJPSIFilterPbPb.C:47
 AddTaskJPSIFilterPbPb.C:48
 AddTaskJPSIFilterPbPb.C:49
 AddTaskJPSIFilterPbPb.C:50
 AddTaskJPSIFilterPbPb.C:51
 AddTaskJPSIFilterPbPb.C:52
 AddTaskJPSIFilterPbPb.C:53
 AddTaskJPSIFilterPbPb.C:54
 AddTaskJPSIFilterPbPb.C:55
 AddTaskJPSIFilterPbPb.C:56
 AddTaskJPSIFilterPbPb.C:57
 AddTaskJPSIFilterPbPb.C:58
 AddTaskJPSIFilterPbPb.C:59
 AddTaskJPSIFilterPbPb.C:60
 AddTaskJPSIFilterPbPb.C:61
 AddTaskJPSIFilterPbPb.C:62
 AddTaskJPSIFilterPbPb.C:63
 AddTaskJPSIFilterPbPb.C:64
 AddTaskJPSIFilterPbPb.C:65
 AddTaskJPSIFilterPbPb.C:66
 AddTaskJPSIFilterPbPb.C:67
 AddTaskJPSIFilterPbPb.C:68
 AddTaskJPSIFilterPbPb.C:69
 AddTaskJPSIFilterPbPb.C:70
 AddTaskJPSIFilterPbPb.C:71
 AddTaskJPSIFilterPbPb.C:72
 AddTaskJPSIFilterPbPb.C:73
 AddTaskJPSIFilterPbPb.C:74
 AddTaskJPSIFilterPbPb.C:75
 AddTaskJPSIFilterPbPb.C:76
 AddTaskJPSIFilterPbPb.C:77
 AddTaskJPSIFilterPbPb.C:78