ROOT logo
// $Id: AliAnalysisTaskEMCALPi0CalibSelection 56196 2012-05-03 20:53:20Z gconesab $

AliAnalysisTaskEMCALPi0CalibSelection * AddTaskEMCALPi0Calibration(TString outputFile = "", // AnalysisResults.root
                                                                   TString trigger ="CEMC7",
                                                                   Bool_t recalE = kFALSE, 
                                                                   Bool_t recalT = kFALSE,
                                                                   Bool_t rmBad  = kFALSE,
                                                                   Bool_t nonlin = kTRUE,
                                                                   Bool_t simu   = kFALSE)
{
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) 
  {
    ::Error("AddTaskEMCALTriggerQA", "No analysis manager to connect to.");
    return NULL;
  }  
  
  // Check the analysis type using the event handlers connected to the analysis manager.
  //==============================================================================
  if (!mgr->GetInputEventHandler()) 
  {
    ::Error("AddTaskEMCALPi0Calibration", "This task requires an input event handler");
    return NULL;
  }
    
  
  // Create containers for input/output
  AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
  
  AliAnalysisTaskEMCALPi0CalibSelection * pi0calib = new AliAnalysisTaskEMCALPi0CalibSelection ("EMCALPi0Calibration");
  //pi0calib->SetDebugLevel(10); 
  //pi0calib->UseFilteredEventAsInput();
  pi0calib->SetClusterMinEnergy(0.3);
  pi0calib->SetClusterMaxEnergy(10.);
  pi0calib->SetClusterLambda0Cuts(0.1,0.5);
  pi0calib->SetAsymmetryCut(1.);
  pi0calib->SetClusterMinNCells(1);
  pi0calib->SetNCellsGroup(0);
  pi0calib->SwitchOnSameSM();
  pi0calib->SetPairDTimeCut(20);
  pi0calib->SetClusterMinTime(560);
  pi0calib->SetClusterMaxTime(610);

  pi0calib->SetTriggerName(trigger);
  
  // Cluster recalculation, Reco Utils configuration
  
  
  AliEMCALRecoUtils * reco = pi0calib->GetEMCALRecoUtils();
  
  gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/ConfigureEMCALRecoUtils.C");
  
  ConfigureEMCALRecoUtils(reco,
                          simu,                             
                          kTRUE, // exotic
                          nonlin,
                          recalE, 
                          rmBad,
                          recalT); 
  
  reco->SetNumberOfCellsFromEMCALBorder(0); // Do not remove clusters in borders!
  
  // recalibrate energy and do corrections because of Temperature corrections 
  pi0calib->SwitchOnClusterCorrection();
  reco->SwitchOnRecalibration();
  reco->SwitchOnRunDepCorrection();
  
  //reco->Print("");
  
  //---------------------
  // Geometry alignment
  //---------------------
  
  //pi0calib->SetGeometryName("EMCAL_COMPLETE12SMV1");
  pi0calib->SetGeometryName("EMCAL_COMPLETEV1");

  pi0calib->SwitchOnLoadOwnGeometryMatrices();
  
  
  //---------------------
  // Recalibration
  //---------------------
  
  if(recalE)
  {
    TFile * f = new TFile("RecalibrationFactors.root","read");
    for(Int_t ism = 0; ism < 12; ism++)
    {
      TH2F * h = (TH2F*)f->Get("EMCALRecalFactors_SM0");
      reco->SetEMCALChannelRecalibrationFactors(0,h);
    }
  }
  
  pi0calib->PrintInfo();
  
  mgr->AddTask(pi0calib);
  
  if(outputFile.Length()==0) outputFile = AliAnalysisManager::GetCommonFileName(); 

  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
  AliAnalysisDataContainer *coutput = mgr->CreateContainer(Form("Pi0Calibration_Trig%s",trigger.Data()), 
                                                           TList::Class(), AliAnalysisManager::kOutputContainer,  
                                                           outputFile.Data());
  
  AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("ParamsPi0Calibration_Trig%s",trigger.Data()), 
                                                             TList::Class(), AliAnalysisManager::kOutputContainer, 
                                                             "AnalysisParameters.root");
  
  mgr->AddTask(pi0calib);
                                                             
  mgr->ConnectInput  (pi0calib, 0, cinput1);
  mgr->ConnectOutput (pi0calib, 1, coutput);
  mgr->ConnectOutput (pi0calib, 2, cout_cuts);

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