ROOT logo
// $Id$

AliAnalysisTaskSE *AddTaskEMCALTender(
  Bool_t distBC         = kTRUE,   //distance to bad channel
  Bool_t recalibClus    = kTRUE,   //recalibrate cluster energy
  Bool_t recalcClusPos  = kTRUE,   //recalculate cluster position
  Bool_t nonLinearCorr  = kTRUE,   //apply non-linearity
  Bool_t remExoticCell  = kTRUE,   //remove exotic cells
  Bool_t remExoticClus  = kTRUE,   //remove exotic clusters
  Bool_t fidRegion      = kFALSE,  //apply fiducial cuts
  Bool_t calibEnergy    = kTRUE,   //calibrate energy
  Bool_t calibTime      = kTRUE,   //calibrate timing
  Bool_t remBC          = kTRUE,   //remove bad channels
  UInt_t nonLinFunct    = AliEMCALRecoUtils::kBeamTestCorrected,
  Bool_t reclusterize   = kTRUE,   //reclusterize
  Float_t seedthresh    = 0.100,   //seed threshold
  Float_t cellthresh    = 0.050,   //cell threshold
  UInt_t clusterizer    = AliEMCALRecParam::kClusterizerv2,
  Bool_t trackMatch     = kTRUE,   //track matching
  Bool_t updateCellOnly = kFALSE,  //only change if you run your own clusterizer task
  Float_t timeMin       = 100e-9,  //minimum time of physical signal in a cell/digit (s)
  Float_t timeMax       = 900e-9,  //maximum time of physical signal in a cell/digit (s)
  Float_t timeCut       = 900e-9,  //maximum time difference between the digits inside EMC cluster (s)
  const char *pass      = 0,       //string defining pass (use none if figured out from path)
  Bool_t  remapMcAod    = kFALSE   //switch on the remaping for the MC labels in AOD productions
) 
{
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskEMCALTender", "No analysis manager to connect to.");
    return NULL;
  }

  AliVEventHandler *evhand = mgr->GetInputEventHandler();

  // Create the task and configure it.
  //===========================================================================

  AliAnalysisTaskSE *ana = 0;
  AliAnalysisDataContainer *coutput1 = 0;


  gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/ConfigEmcalTenderSupply.C");

  AliEMCALTenderSupply *EMCALSupply = ConfigEmcalTenderSupply(distBC, recalibClus, recalcClusPos, nonLinearCorr, remExoticCell, remExoticClus, 
							      fidRegion, calibEnergy, calibTime, remBC, nonLinFunct, reclusterize, seedthresh, 
							      cellthresh, clusterizer, trackMatch, updateCellOnly, timeMin, timeMax, timeCut);

  if (pass) 
    EMCALSupply->SetPass(pass);

  if (evhand->InheritsFrom("AliESDInputHandler")) {
    AliTender* alitender = mgr->GetTopTasks()->FindObject("AliTender");
    
    if (!alitender)
      alitender = new  AliTender("AliTender");
    
    alitender->AddSupply(EMCALSupply);
    alitender->SetDefaultCDBStorage("raw://"); 
    
    ana = alitender;
    
    coutput1 = mgr->CreateContainer("emcal_tender_event", 
				    AliESDEvent::Class(), 
				    AliAnalysisManager::kExchangeContainer, 
				    "default_tender");
  } else if (evhand->InheritsFrom("AliAODInputHandler")) {
    AliEmcalTenderTask* emcaltender = mgr->GetTopTasks()->FindObject("AliEmcalTenderTask"); 
    
    if (!emcaltender)
        emcaltender = new  AliEmcalTenderTask("AliEmcalTenderTask");
    
    if (remapMcAod)
        EMCALSupply->SwitchOnRemapMCLabelForAODs();
    
    emcaltender->SetEMCALTenderSupply(EMCALSupply);
    
    ana = emcaltender;
    
    coutput1 = mgr->CreateContainer("emcal_tender_event",
				    AliAODEvent::Class(), 
				    AliAnalysisManager::kExchangeContainer, 
				    "default_tender");
  } else {
    ::Error("AddTaskEMCALTender", "Input event handler not recognized, AOD/ESD expected. Returning...");
    return NULL;
  }

  mgr->AddTask(ana);

  // Create ONLY the output containers for the data produced by the task.
  // Get and connect other common input/output containers via the manager as below
  //==============================================================================

  mgr->ConnectInput(ana, 0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput(ana, 1, coutput1 );

  ::Info("AddTaskEMCALTender", "Tender configured");
   
  return ana;
}
 AddTaskEMCALTender.C:1
 AddTaskEMCALTender.C:2
 AddTaskEMCALTender.C:3
 AddTaskEMCALTender.C:4
 AddTaskEMCALTender.C:5
 AddTaskEMCALTender.C:6
 AddTaskEMCALTender.C:7
 AddTaskEMCALTender.C:8
 AddTaskEMCALTender.C:9
 AddTaskEMCALTender.C:10
 AddTaskEMCALTender.C:11
 AddTaskEMCALTender.C:12
 AddTaskEMCALTender.C:13
 AddTaskEMCALTender.C:14
 AddTaskEMCALTender.C:15
 AddTaskEMCALTender.C:16
 AddTaskEMCALTender.C:17
 AddTaskEMCALTender.C:18
 AddTaskEMCALTender.C:19
 AddTaskEMCALTender.C:20
 AddTaskEMCALTender.C:21
 AddTaskEMCALTender.C:22
 AddTaskEMCALTender.C:23
 AddTaskEMCALTender.C:24
 AddTaskEMCALTender.C:25
 AddTaskEMCALTender.C:26
 AddTaskEMCALTender.C:27
 AddTaskEMCALTender.C:28
 AddTaskEMCALTender.C:29
 AddTaskEMCALTender.C:30
 AddTaskEMCALTender.C:31
 AddTaskEMCALTender.C:32
 AddTaskEMCALTender.C:33
 AddTaskEMCALTender.C:34
 AddTaskEMCALTender.C:35
 AddTaskEMCALTender.C:36
 AddTaskEMCALTender.C:37
 AddTaskEMCALTender.C:38
 AddTaskEMCALTender.C:39
 AddTaskEMCALTender.C:40
 AddTaskEMCALTender.C:41
 AddTaskEMCALTender.C:42
 AddTaskEMCALTender.C:43
 AddTaskEMCALTender.C:44
 AddTaskEMCALTender.C:45
 AddTaskEMCALTender.C:46
 AddTaskEMCALTender.C:47
 AddTaskEMCALTender.C:48
 AddTaskEMCALTender.C:49
 AddTaskEMCALTender.C:50
 AddTaskEMCALTender.C:51
 AddTaskEMCALTender.C:52
 AddTaskEMCALTender.C:53
 AddTaskEMCALTender.C:54
 AddTaskEMCALTender.C:55
 AddTaskEMCALTender.C:56
 AddTaskEMCALTender.C:57
 AddTaskEMCALTender.C:58
 AddTaskEMCALTender.C:59
 AddTaskEMCALTender.C:60
 AddTaskEMCALTender.C:61
 AddTaskEMCALTender.C:62
 AddTaskEMCALTender.C:63
 AddTaskEMCALTender.C:64
 AddTaskEMCALTender.C:65
 AddTaskEMCALTender.C:66
 AddTaskEMCALTender.C:67
 AddTaskEMCALTender.C:68
 AddTaskEMCALTender.C:69
 AddTaskEMCALTender.C:70
 AddTaskEMCALTender.C:71
 AddTaskEMCALTender.C:72
 AddTaskEMCALTender.C:73
 AddTaskEMCALTender.C:74
 AddTaskEMCALTender.C:75
 AddTaskEMCALTender.C:76
 AddTaskEMCALTender.C:77
 AddTaskEMCALTender.C:78
 AddTaskEMCALTender.C:79
 AddTaskEMCALTender.C:80
 AddTaskEMCALTender.C:81
 AddTaskEMCALTender.C:82
 AddTaskEMCALTender.C:83
 AddTaskEMCALTender.C:84
 AddTaskEMCALTender.C:85
 AddTaskEMCALTender.C:86
 AddTaskEMCALTender.C:87
 AddTaskEMCALTender.C:88
 AddTaskEMCALTender.C:89
 AddTaskEMCALTender.C:90
 AddTaskEMCALTender.C:91
 AddTaskEMCALTender.C:92
 AddTaskEMCALTender.C:93
 AddTaskEMCALTender.C:94
 AddTaskEMCALTender.C:95
 AddTaskEMCALTender.C:96
 AddTaskEMCALTender.C:97
 AddTaskEMCALTender.C:98
 AddTaskEMCALTender.C:99
 AddTaskEMCALTender.C:100
 AddTaskEMCALTender.C:101
 AddTaskEMCALTender.C:102
 AddTaskEMCALTender.C:103
 AddTaskEMCALTender.C:104