ROOT logo
AliAnalysisTaskSE *AddTaskEmcalPreparation(const char *perstr  = "LHC11h",
					   const char *pass    = 0 /*should not be needed; will be recovered from path of AOD/ESD; no need to specify by user; */
					   ) {

  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr)
  {
    ::Error("AddTaskEmcalPreparation", "No analysis manager to connect to.");
    return NULL;
  }

  TString period(perstr);
  period.ToLower();

  Bool_t isMC = kFALSE;
  if(period.Sizeof()>7) isMC = kTRUE;
  //  Bool_t isMC = (mgr->GetMCtruthEventHandler() != NULL); //only works for ESD
  if(isMC) Printf("AddTaskEmcalPreparation: Running on MC");
  else     Printf("AddTaskEmcalPreparation: Running on DATA");

  //----------------------- Add tender -------------------------------------------------------
  Bool_t distBC         = kFALSE; //switch for recalculation cluster position from bad channel 
  Bool_t recalibClus    = kFALSE;
  Bool_t recalcClusPos  = kFALSE;
  Bool_t nonLinearCorr  = kFALSE;
  Bool_t remExoticCell  = kFALSE;
  Bool_t remExoticClus  = kFALSE;
  Bool_t fidRegion      = kFALSE;
  Bool_t calibEnergy    = kTRUE;
  Bool_t calibTime      = kTRUE;
  Bool_t remBC          = kTRUE;
  UInt_t nonLinFunct    = 0;
  Bool_t reclusterize   = kFALSE;
  Float_t seedthresh    = 0.1;      // 100 MeV
  Float_t cellthresh    = 0.05;     // 50 MeV 
  UInt_t clusterizer    = 0;
  Bool_t trackMatch     = kFALSE;
  Bool_t updateCellOnly = kFALSE;
  Float_t timeMin       = -50e-9;   // minimum time of physical signal in a cell/digit
  Float_t timeMax       =  50e-9;   // maximum time of physical signal in a cell/digit
  Float_t timeCut       = 1e6;
  if(period.Contains("lhc11h")) {
    timeMin = -50e-9;
    timeMax = 100e-9;
  }
  if(isMC) {
    calibEnergy = kFALSE;
    calibTime   = kFALSE;
    timeMin = -1.;
    timeMax = 1e6;
  }
  
  gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEMCALTender.C");//tendertasks
  AliAnalysisTaskSE *tender = AddTaskEMCALTender(distBC, recalibClus, recalcClusPos, nonLinearCorr, remExoticCell, remExoticClus,
						 fidRegion, calibEnergy, calibTime, remBC, nonLinFunct, reclusterize, seedthresh,
						 cellthresh, clusterizer, trackMatch, updateCellOnly, timeMin, timeMax, timeCut,pass);

  //----------------------- Add clusterizer -------------------------------------------------------
  clusterizer    = AliEMCALRecParam::kClusterizerv2;
  remExoticCell  = kTRUE;
  TString tmpClusters = "tmpCaloClusters";
  gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskClusterizerFast.C");
  AliAnalysisTaskEMCALClusterizeFast *clusterizerTask = AddTaskClusterizerFast("ClusterizerFast","",tmpClusters.Data(),clusterizer,cellthresh,seedthresh,
									       timeMin,timeMax,timeCut,remExoticCell,distBC,
									       AliAnalysisTaskEMCALClusterizeFast::kFEEData);
  
  //----------------------- Add cluster maker -----------------------------------------------------
  gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalClusterMaker.C"); //cluster maker: non-linearity, 
  UInt_t nonLinFunct = AliEMCALRecoUtils::kBeamTestCorrected;
  if(isMC) {
    if(period == "lhc12a15a") 
      nonLinFunct = AliEMCALRecoUtils::kPi0MCv2;
    else
      nonLinFunct = AliEMCALRecoUtils::kPi0MCv3;
  }
  remExoticClus  = kTRUE;
  AliEmcalClusterMaker *clusMaker = AddTaskEmcalClusterMaker(nonLinFunct,remExoticClus,tmpClusters.Data(),"EmcCaloClusters",0.,kTRUE);
  
  return clusterizerTask;
  
}
 AddTaskEmcalPreparation.C:1
 AddTaskEmcalPreparation.C:2
 AddTaskEmcalPreparation.C:3
 AddTaskEmcalPreparation.C:4
 AddTaskEmcalPreparation.C:5
 AddTaskEmcalPreparation.C:6
 AddTaskEmcalPreparation.C:7
 AddTaskEmcalPreparation.C:8
 AddTaskEmcalPreparation.C:9
 AddTaskEmcalPreparation.C:10
 AddTaskEmcalPreparation.C:11
 AddTaskEmcalPreparation.C:12
 AddTaskEmcalPreparation.C:13
 AddTaskEmcalPreparation.C:14
 AddTaskEmcalPreparation.C:15
 AddTaskEmcalPreparation.C:16
 AddTaskEmcalPreparation.C:17
 AddTaskEmcalPreparation.C:18
 AddTaskEmcalPreparation.C:19
 AddTaskEmcalPreparation.C:20
 AddTaskEmcalPreparation.C:21
 AddTaskEmcalPreparation.C:22
 AddTaskEmcalPreparation.C:23
 AddTaskEmcalPreparation.C:24
 AddTaskEmcalPreparation.C:25
 AddTaskEmcalPreparation.C:26
 AddTaskEmcalPreparation.C:27
 AddTaskEmcalPreparation.C:28
 AddTaskEmcalPreparation.C:29
 AddTaskEmcalPreparation.C:30
 AddTaskEmcalPreparation.C:31
 AddTaskEmcalPreparation.C:32
 AddTaskEmcalPreparation.C:33
 AddTaskEmcalPreparation.C:34
 AddTaskEmcalPreparation.C:35
 AddTaskEmcalPreparation.C:36
 AddTaskEmcalPreparation.C:37
 AddTaskEmcalPreparation.C:38
 AddTaskEmcalPreparation.C:39
 AddTaskEmcalPreparation.C:40
 AddTaskEmcalPreparation.C:41
 AddTaskEmcalPreparation.C:42
 AddTaskEmcalPreparation.C:43
 AddTaskEmcalPreparation.C:44
 AddTaskEmcalPreparation.C:45
 AddTaskEmcalPreparation.C:46
 AddTaskEmcalPreparation.C:47
 AddTaskEmcalPreparation.C:48
 AddTaskEmcalPreparation.C:49
 AddTaskEmcalPreparation.C:50
 AddTaskEmcalPreparation.C:51
 AddTaskEmcalPreparation.C:52
 AddTaskEmcalPreparation.C:53
 AddTaskEmcalPreparation.C:54
 AddTaskEmcalPreparation.C:55
 AddTaskEmcalPreparation.C:56
 AddTaskEmcalPreparation.C:57
 AddTaskEmcalPreparation.C:58
 AddTaskEmcalPreparation.C:59
 AddTaskEmcalPreparation.C:60
 AddTaskEmcalPreparation.C:61
 AddTaskEmcalPreparation.C:62
 AddTaskEmcalPreparation.C:63
 AddTaskEmcalPreparation.C:64
 AddTaskEmcalPreparation.C:65
 AddTaskEmcalPreparation.C:66
 AddTaskEmcalPreparation.C:67
 AddTaskEmcalPreparation.C:68
 AddTaskEmcalPreparation.C:69
 AddTaskEmcalPreparation.C:70
 AddTaskEmcalPreparation.C:71
 AddTaskEmcalPreparation.C:72
 AddTaskEmcalPreparation.C:73
 AddTaskEmcalPreparation.C:74
 AddTaskEmcalPreparation.C:75
 AddTaskEmcalPreparation.C:76
 AddTaskEmcalPreparation.C:77
 AddTaskEmcalPreparation.C:78
 AddTaskEmcalPreparation.C:79
 AddTaskEmcalPreparation.C:80
 AddTaskEmcalPreparation.C:81
 AddTaskEmcalPreparation.C:82