ROOT logo
AliAnalysisTask *AddTaskJPSIFilter_pp(TString cfg="ConfigJpsi_nano_pp.C",
				      Bool_t gridconf=kFALSE,
				      ULong64_t triggers=AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB,
				      TString period="",
				      Bool_t storeLS = kFALSE,
				      Bool_t hasMC_aod = kFALSE){
  //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)||hasMC_aod;
  
  //Do we run on AOD?
  Bool_t isAOD=mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();

  //Allow merging of the filtered aods on grid trains
  if(mgr->GetGridHandler()) {
    printf(" SET MERGE FILTERED AODs \n");
    //mgr->GetGridHandler()->SetMergeAOD(kTRUE);
  }

  //set config file name
  TString configFile("");
  printf("%s \n",gSystem->pwd());
  TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
  if(cfg.IsNull()) cfg="ConfigJpsi_jb_PbPb.C";

  // the different paths
  TString alienPath("alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/macrosJPSI");
  TString alirootPath("$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/");

  ////////// >>>>>>>>>> alien config
  if(gridconf && !gSystem->Exec(Form("alien_cp %s/%s .",alienPath.Data(),cfg.Data()))) {
    gSystem->Exec(Form("ls -l %s",gSystem->pwd()));
    configFile=gSystem->pwd();
  }
  else {
    printf("ERROR: couldn't copy file %s/%s from grid \n", alienPath.Data(),cfg.Data() );
    return;
  }
  ///////// >>>>>>>>> aliroot config
  if(!gridconf) configFile=alirootPath.Data();
  ///////// add config to path
  configFile+="/";
  configFile+=cfg.Data();


  //gROOT->LoadMacro("$ALICE_ROOT/PWGDQ/dielectron/macros/ConfigBJpsi_ff_PbPbFilter.C");
  //  gROOT->LoadMacro("$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigBJpsi_ff_PbPbFilter.C");
  //  gROOT->LoadMacro("$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigJpsi_nano_PbPb.C");

  //load dielectron configuration file (only once)
  //  TString checkconfig="ConfigJpsi_jb_PbPb";
  if (!gROOT->GetListOfGlobalFunctions()->FindObject(cfg.Data()))
    gROOT->LoadMacro(configFile.Data());

  AliDielectron *jpsi=ConfigJpsi_nano_pp(0,hasMC,period);
  
  if(isAOD) {
    //add options to AliAODHandler to duplicate input event
    AliAODHandler *aodHandler = (AliAODHandler*)mgr->GetOutputEventHandler();
    aodHandler->SetCreateNonStandardAOD();
    aodHandler->SetNeedsHeaderReplication();
    if(!period.Contains("LHC10h")) aodHandler->SetNeedsTOFHeaderReplication();
    aodHandler->SetNeedsVZEROReplication();
    /*aodHandler->SetNeedsTracksBranchReplication();
    aodHandler->SetNeedsCaloClustersBranchReplication();
    aodHandler->SetNeedsVerticesBranchReplication();
    aodHandler->SetNeedsCascadesBranchReplication();
    aodHandler->SetNeedsTrackletsBranchReplication();
    aodHandler->SetNeedsPMDClustersBranchReplication();
    aodHandler->SetNeedsJetsBranchReplication();
    aodHandler->SetNeedsFMDClustersBranchReplication();
    //aodHandler->SetNeedsMCParticlesBranchReplication();
    aodHandler->SetNeedsDimuonsBranchReplication();*/
    //    if(hasMC) aodHandler->SetNeedsV0sBranchReplication();
    if(hasMC) aodHandler->SetNeedsMCParticlesBranchReplication();
    jpsi->SetHasMC(hasMC);
  }
  
  //Create task and add it to the analysis manager
  AliAnalysisTaskDielectronFilter *task=new AliAnalysisTaskDielectronFilter("jpsi_DielectronFilter");
  task->SetTriggerMask(triggers);
  //  task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral+AliVEvent::kEMCEGA+AliVEvent::kEMCEJE);
  //  task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
  if (!hasMC) task->UsePhysicsSelection();

  //   //Add event filter
  //   AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0");
  //   if(!hasMC) eventCuts->SetRequireVertex();
  //   if (isAOD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny);
  //   eventCuts->SetMinVtxContributors(1);
  //   eventCuts->SetVertexZ(-10.,10.);
  //   eventCuts->SetCentralityRange(0.0,90.0);
  //   task->SetEventFilter(eventCuts);

  task->SetDielectron(jpsi);
  if(storeLS) task->SetStoreLikeSignCandidates(storeLS);
  task->SetCreateNanoAODs(kTRUE);
  task->SetStoreEventsWithSingleTracks(kTRUE);
  //task->SetStoreHeader(kTRUE);
  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, 0, mgr->GetCommonOutputContainer());
  mgr->ConnectOutput(task, 1, cOutputHist1);
  mgr->ConnectOutput(task, 2, cOutputHist2);
  
  return task;
}
 AddTaskJPSIFilter_pp.C:1
 AddTaskJPSIFilter_pp.C:2
 AddTaskJPSIFilter_pp.C:3
 AddTaskJPSIFilter_pp.C:4
 AddTaskJPSIFilter_pp.C:5
 AddTaskJPSIFilter_pp.C:6
 AddTaskJPSIFilter_pp.C:7
 AddTaskJPSIFilter_pp.C:8
 AddTaskJPSIFilter_pp.C:9
 AddTaskJPSIFilter_pp.C:10
 AddTaskJPSIFilter_pp.C:11
 AddTaskJPSIFilter_pp.C:12
 AddTaskJPSIFilter_pp.C:13
 AddTaskJPSIFilter_pp.C:14
 AddTaskJPSIFilter_pp.C:15
 AddTaskJPSIFilter_pp.C:16
 AddTaskJPSIFilter_pp.C:17
 AddTaskJPSIFilter_pp.C:18
 AddTaskJPSIFilter_pp.C:19
 AddTaskJPSIFilter_pp.C:20
 AddTaskJPSIFilter_pp.C:21
 AddTaskJPSIFilter_pp.C:22
 AddTaskJPSIFilter_pp.C:23
 AddTaskJPSIFilter_pp.C:24
 AddTaskJPSIFilter_pp.C:25
 AddTaskJPSIFilter_pp.C:26
 AddTaskJPSIFilter_pp.C:27
 AddTaskJPSIFilter_pp.C:28
 AddTaskJPSIFilter_pp.C:29
 AddTaskJPSIFilter_pp.C:30
 AddTaskJPSIFilter_pp.C:31
 AddTaskJPSIFilter_pp.C:32
 AddTaskJPSIFilter_pp.C:33
 AddTaskJPSIFilter_pp.C:34
 AddTaskJPSIFilter_pp.C:35
 AddTaskJPSIFilter_pp.C:36
 AddTaskJPSIFilter_pp.C:37
 AddTaskJPSIFilter_pp.C:38
 AddTaskJPSIFilter_pp.C:39
 AddTaskJPSIFilter_pp.C:40
 AddTaskJPSIFilter_pp.C:41
 AddTaskJPSIFilter_pp.C:42
 AddTaskJPSIFilter_pp.C:43
 AddTaskJPSIFilter_pp.C:44
 AddTaskJPSIFilter_pp.C:45
 AddTaskJPSIFilter_pp.C:46
 AddTaskJPSIFilter_pp.C:47
 AddTaskJPSIFilter_pp.C:48
 AddTaskJPSIFilter_pp.C:49
 AddTaskJPSIFilter_pp.C:50
 AddTaskJPSIFilter_pp.C:51
 AddTaskJPSIFilter_pp.C:52
 AddTaskJPSIFilter_pp.C:53
 AddTaskJPSIFilter_pp.C:54
 AddTaskJPSIFilter_pp.C:55
 AddTaskJPSIFilter_pp.C:56
 AddTaskJPSIFilter_pp.C:57
 AddTaskJPSIFilter_pp.C:58
 AddTaskJPSIFilter_pp.C:59
 AddTaskJPSIFilter_pp.C:60
 AddTaskJPSIFilter_pp.C:61
 AddTaskJPSIFilter_pp.C:62
 AddTaskJPSIFilter_pp.C:63
 AddTaskJPSIFilter_pp.C:64
 AddTaskJPSIFilter_pp.C:65
 AddTaskJPSIFilter_pp.C:66
 AddTaskJPSIFilter_pp.C:67
 AddTaskJPSIFilter_pp.C:68
 AddTaskJPSIFilter_pp.C:69
 AddTaskJPSIFilter_pp.C:70
 AddTaskJPSIFilter_pp.C:71
 AddTaskJPSIFilter_pp.C:72
 AddTaskJPSIFilter_pp.C:73
 AddTaskJPSIFilter_pp.C:74
 AddTaskJPSIFilter_pp.C:75
 AddTaskJPSIFilter_pp.C:76
 AddTaskJPSIFilter_pp.C:77
 AddTaskJPSIFilter_pp.C:78
 AddTaskJPSIFilter_pp.C:79
 AddTaskJPSIFilter_pp.C:80
 AddTaskJPSIFilter_pp.C:81
 AddTaskJPSIFilter_pp.C:82
 AddTaskJPSIFilter_pp.C:83
 AddTaskJPSIFilter_pp.C:84
 AddTaskJPSIFilter_pp.C:85
 AddTaskJPSIFilter_pp.C:86
 AddTaskJPSIFilter_pp.C:87
 AddTaskJPSIFilter_pp.C:88
 AddTaskJPSIFilter_pp.C:89
 AddTaskJPSIFilter_pp.C:90
 AddTaskJPSIFilter_pp.C:91
 AddTaskJPSIFilter_pp.C:92
 AddTaskJPSIFilter_pp.C:93
 AddTaskJPSIFilter_pp.C:94
 AddTaskJPSIFilter_pp.C:95
 AddTaskJPSIFilter_pp.C:96
 AddTaskJPSIFilter_pp.C:97
 AddTaskJPSIFilter_pp.C:98
 AddTaskJPSIFilter_pp.C:99
 AddTaskJPSIFilter_pp.C:100
 AddTaskJPSIFilter_pp.C:101
 AddTaskJPSIFilter_pp.C:102
 AddTaskJPSIFilter_pp.C:103
 AddTaskJPSIFilter_pp.C:104
 AddTaskJPSIFilter_pp.C:105
 AddTaskJPSIFilter_pp.C:106
 AddTaskJPSIFilter_pp.C:107
 AddTaskJPSIFilter_pp.C:108
 AddTaskJPSIFilter_pp.C:109
 AddTaskJPSIFilter_pp.C:110
 AddTaskJPSIFilter_pp.C:111
 AddTaskJPSIFilter_pp.C:112
 AddTaskJPSIFilter_pp.C:113
 AddTaskJPSIFilter_pp.C:114
 AddTaskJPSIFilter_pp.C:115
 AddTaskJPSIFilter_pp.C:116
 AddTaskJPSIFilter_pp.C:117
 AddTaskJPSIFilter_pp.C:118
 AddTaskJPSIFilter_pp.C:119
 AddTaskJPSIFilter_pp.C:120
 AddTaskJPSIFilter_pp.C:121
 AddTaskJPSIFilter_pp.C:122
 AddTaskJPSIFilter_pp.C:123
 AddTaskJPSIFilter_pp.C:124
 AddTaskJPSIFilter_pp.C:125
 AddTaskJPSIFilter_pp.C:126
 AddTaskJPSIFilter_pp.C:127
 AddTaskJPSIFilter_pp.C:128
 AddTaskJPSIFilter_pp.C:129
 AddTaskJPSIFilter_pp.C:130
 AddTaskJPSIFilter_pp.C:131
 AddTaskJPSIFilter_pp.C:132
 AddTaskJPSIFilter_pp.C:133
 AddTaskJPSIFilter_pp.C:134
 AddTaskJPSIFilter_pp.C:135
 AddTaskJPSIFilter_pp.C:136
 AddTaskJPSIFilter_pp.C:137
 AddTaskJPSIFilter_pp.C:138
 AddTaskJPSIFilter_pp.C:139
 AddTaskJPSIFilter_pp.C:140
 AddTaskJPSIFilter_pp.C:141
 AddTaskJPSIFilter_pp.C:142
 AddTaskJPSIFilter_pp.C:143
 AddTaskJPSIFilter_pp.C:144