ROOT logo
AliCFMuonSingleTask1* AddTaskSingleMuonCF(Bool_t isMC=kTRUE)
{
  //
  // just a template of the AddTask macros
  // suppose we apply the cuts for same variables
  //

  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskMuonHFCorrAna", "No analysis manager to connect to.");
    return;
  }
  TString type = mgr->GetInputEventHandler()->GetDataType();
  if (!type.Contains("ESD") && !type.Contains("AOD")) {
    ::Error("AddTaskMuonHFCorrAna", "MuonsHF task needs the manager to have an ESD or AOD input handler.");
    return;
  }
  if (type.Contains("ESD") && isMC && !mgr->GetMCtruthEventHandler()) {
    AliMCEventHandler *mcHandler = new AliMCEventHandler();
    mcHandler->SetReadTR(kTRUE);
    mgr->SetMCtruthEventHandler(mcHandler);
  }

  enum             { kEta,  kY, kPhi, kPt, kP3, kHit, kChi2Fit, kTrM, kChi2TrM,  kContrN,  kVt,  kVz, kTrig, kDCA, kZcoor, kRabs, kCharge, kTheta,kNVars };
  Int_t  nBins[] = {   5 , 5  ,  45 , 60 ,150 ,  20 ,      20 ,  4  ,      20 ,     202 , 100 ,  100 ,  10 , 500 ,   1000,    7 ,     3 , 100      };
  Double_t min[] = {  -4.,-4. ,-180.,  0.,  0.,   0.,       0., -0.5,       0.,     -2.5,   0., -100.,   0.,   0., -3000.,  171.,  -1.5 , 2.95      };
  Double_t max[] = {-2.5.,-2.5, 180., 30.,150.,  20.,      20.,  3.5,      10.,    199.5, 200.,  100.,  10., 500.,  1000.,  178.,   1.5 , 3.15     };

  Double_t *binLimits = 0;
  Int_t nSteps=1; if (isMC) nSteps=2;
  AliCFContainer* contCF = new AliCFContainer("container", "", nSteps, kNVars, nBins);
  for (Int_t var=kNVars; var--;) {
    binLimits = new Double_t[nBins[var]+1];
    for (Int_t i=0; i<=nBins[var]; i++) binLimits[i]=min[var]+i*(max[var]-min[var])/nBins[var];
    contCF->SetBinLimits(var, binLimits);
    delete [] binLimits; binLimits=0;
  }

  TList *qaList = new TList();
  TObjArray *genList = new TObjArray(0);
  AliCFTrackKineCuts *genKineCuts = new AliCFTrackKineCuts("genKineCuts", "GenKineCuts");
  genKineCuts->SetPtRange(min[kPt], max[kPt]);
  genKineCuts->SetRapidityRange(min[kY], max[kY]);
  genKineCuts->SetQAOn(qaList);
  genList->AddLast(genKineCuts);

  TObjArray *recList = new TObjArray(0);
  AliCFTrackKineCuts *recKineCuts = new AliCFTrackKineCuts("recKineCuts", "RecKineCuts");
  recKineCuts->SetPtRange(min[kPt], max[kPt]);
  recKineCuts->SetRapidityRange(min[kY], max[kY]);
  recKineCuts->SetQAOn(qaList);
  recList->AddLast(recKineCuts);

  AliCFManager* managerCF = new AliCFManager() ;
  managerCF->SetParticleContainer(contCF);
  managerCF->SetParticleCutsList(AliCFManager::kPartGenCuts, genList);
  managerCF->SetParticleCutsList(AliCFManager::kPartAccCuts, recList);

  AliCFMuonSingleTask1 *taskMuonCF = new AliCFMuonSingleTask1("AliMuonSingleTask1");
  taskMuonCF->SetCFManager(managerCF);
  taskMuonCF->SetQAList(qaList);
  taskMuonCF->SetUseMC(isMC);
  mgr->AddTask(taskMuonCF);

  mgr->ConnectInput(taskMuonCF, 0, mgr->GetCommonInputContainer());

  char *fileName = "muonCF.root";
  mgr->ConnectOutput(taskMuonCF,1,mgr->CreateContainer("chist",TH1I::Class(),AliAnalysisManager::kOutputContainer,fileName));
  mgr->ConnectOutput(taskMuonCF,2,mgr->CreateContainer("ccont",AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,fileName));

  return taskMuonCF;
}
 AddTaskCFMuonSingle.C:1
 AddTaskCFMuonSingle.C:2
 AddTaskCFMuonSingle.C:3
 AddTaskCFMuonSingle.C:4
 AddTaskCFMuonSingle.C:5
 AddTaskCFMuonSingle.C:6
 AddTaskCFMuonSingle.C:7
 AddTaskCFMuonSingle.C:8
 AddTaskCFMuonSingle.C:9
 AddTaskCFMuonSingle.C:10
 AddTaskCFMuonSingle.C:11
 AddTaskCFMuonSingle.C:12
 AddTaskCFMuonSingle.C:13
 AddTaskCFMuonSingle.C:14
 AddTaskCFMuonSingle.C:15
 AddTaskCFMuonSingle.C:16
 AddTaskCFMuonSingle.C:17
 AddTaskCFMuonSingle.C:18
 AddTaskCFMuonSingle.C:19
 AddTaskCFMuonSingle.C:20
 AddTaskCFMuonSingle.C:21
 AddTaskCFMuonSingle.C:22
 AddTaskCFMuonSingle.C:23
 AddTaskCFMuonSingle.C:24
 AddTaskCFMuonSingle.C:25
 AddTaskCFMuonSingle.C:26
 AddTaskCFMuonSingle.C:27
 AddTaskCFMuonSingle.C:28
 AddTaskCFMuonSingle.C:29
 AddTaskCFMuonSingle.C:30
 AddTaskCFMuonSingle.C:31
 AddTaskCFMuonSingle.C:32
 AddTaskCFMuonSingle.C:33
 AddTaskCFMuonSingle.C:34
 AddTaskCFMuonSingle.C:35
 AddTaskCFMuonSingle.C:36
 AddTaskCFMuonSingle.C:37
 AddTaskCFMuonSingle.C:38
 AddTaskCFMuonSingle.C:39
 AddTaskCFMuonSingle.C:40
 AddTaskCFMuonSingle.C:41
 AddTaskCFMuonSingle.C:42
 AddTaskCFMuonSingle.C:43
 AddTaskCFMuonSingle.C:44
 AddTaskCFMuonSingle.C:45
 AddTaskCFMuonSingle.C:46
 AddTaskCFMuonSingle.C:47
 AddTaskCFMuonSingle.C:48
 AddTaskCFMuonSingle.C:49
 AddTaskCFMuonSingle.C:50
 AddTaskCFMuonSingle.C:51
 AddTaskCFMuonSingle.C:52
 AddTaskCFMuonSingle.C:53
 AddTaskCFMuonSingle.C:54
 AddTaskCFMuonSingle.C:55
 AddTaskCFMuonSingle.C:56
 AddTaskCFMuonSingle.C:57
 AddTaskCFMuonSingle.C:58
 AddTaskCFMuonSingle.C:59
 AddTaskCFMuonSingle.C:60
 AddTaskCFMuonSingle.C:61
 AddTaskCFMuonSingle.C:62
 AddTaskCFMuonSingle.C:63
 AddTaskCFMuonSingle.C:64
 AddTaskCFMuonSingle.C:65
 AddTaskCFMuonSingle.C:66
 AddTaskCFMuonSingle.C:67
 AddTaskCFMuonSingle.C:68
 AddTaskCFMuonSingle.C:69
 AddTaskCFMuonSingle.C:70
 AddTaskCFMuonSingle.C:71
 AddTaskCFMuonSingle.C:72
 AddTaskCFMuonSingle.C:73