ROOT logo
#if ! defined (__CINT__) || defined (__MAKECINT__)
#include "TTree.h"
#include "TError.h"
#include "AliLog.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisDataContainer.h"
#include "TRD/AliTRDgeometry.h"
#include "PWGPP/TRD/AliTRDpwgppHelper.h"
#include "PWGPP/TRD/AliTRDresolution.h"
#include "PWGPP/TRD/AliTRDclusterResolution.h"
#include "PWGPP/TRD/AliTRDalignmentTask.h"
#endif

void AddTRDresolution(AliAnalysisManager *mgr, Int_t map, AliAnalysisDataContainer **ci)
{
  Info("AddTRDresolution", Form("[0]=\"%s\" [1]=\"%s\" [2]=\"%s\" [3]=\"%s\" [4]=\"%s\"", ci[0]->GetName(), ci[1]->GetName(), ci[2]->GetName(), ci[3]->GetName(), ci[4]->GetName()));
  AliAnalysisDataContainer *evInfoContainer = ci[3];

  //AliLog::SetClassDebugLevel("AliTRDrecoTask", 2);
  //AliLog::SetClassDebugLevel("AliTRDresolution", 2);
  AliTRDresolution *res(NULL);
  const Char_t *suffix[]={"", "ITS", "K"};
  for(Int_t itq=0; itq<1/*3*/; itq++){
    mgr->AddTask(res = new AliTRDresolution(Form("TRDresolution%s", suffix[itq])));
    res->SetMCdata(mgr->GetMCtruthEventHandler());
    res->SetPostProcess(kFALSE);
    res->SetDebugLevel(0);
    res->SetPtThreshold(0.2);
    //res->SetTriggerList("CINT7WUHJT-S-NOPF-CENT CINT7WUHSE-S-NOPF-CENT CINT7WUHQU-S-NOPF-CENT CEMC7WU-S-NOPF-ALL");
    res->SetNameId(suffix[itq]);
    mgr->ConnectInput(res, 0, mgr->GetCommonInputContainer()); // connect main (ESD) container 
    mgr->ConnectInput(res, 1, ci[itq]);                        // conect track info container
    mgr->ConnectInput(res, 2, evInfoContainer);                // conect event info container
    mgr->ConnectInput(res, 3, ci[4]);                          // conect clusters container
    mgr->ConnectOutput(res,1, mgr->CreateContainer(res->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Performance", mgr->GetCommonFileName())));
  
    // Create output containers for calibration tasks
    AliAnalysisDataContainer *co(NULL);
    co = mgr->CreateContainer(Form("%sCl2Trk%s", res->GetName(), suffix[itq]), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
    mgr->ConnectOutput(res, AliTRDresolution::kClToTrk, co);
    co = mgr->CreateContainer(Form("%sCl2MC%s", res->GetName(), suffix[itq]), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
    mgr->ConnectOutput(res, AliTRDresolution::kClToMC, co);
    
    TObjArray *coa = mgr->GetContainers();
    // Cluster Error Parameterization
    if(TESTBIT(map, AliTRDpwgppHelper::kClErrParam)){
      AliTRDclusterResolution *taskCl(NULL);
      AliLog::SetClassDebugLevel("AliTRDclusterResolution", 2);
      for(Int_t idet(10); idet<11/*AliTRDgeometry::kNdet*/; idet++){
        mgr->AddTask(taskCl = new AliTRDclusterResolution(Form("ClErrCalib%03d", idet)));
        taskCl->SetCalibrationRegion(idet);
        taskCl->SetDebugLevel(0);
        mgr->ConnectInput(taskCl,  0, mgr->GetCommonInputContainer());  // connect main (ESD) container
        mgr->ConnectInput(taskCl,  1, (AliAnalysisDataContainer*)coa->FindObject(Form("%sCl2Trk%s", res->GetName(), suffix[itq])));
        mgr->ConnectInput(taskCl,  2, evInfoContainer);
        mgr->ConnectOutput(taskCl, 1, mgr->CreateContainer(taskCl->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Calibration", mgr->GetCommonFileName())));
        if(mgr->GetMCtruthEventHandler()){
          mgr->AddTask(taskCl = new AliTRDclusterResolution(Form("ClErrCalibMC%03d", idet)));
          taskCl->SetCalibrationRegion(idet);
          taskCl->SetDebugLevel(0);
          mgr->ConnectInput(taskCl,  0, mgr->GetCommonInputContainer());  
          mgr->ConnectInput(taskCl,  1, (AliAnalysisDataContainer*)coa->FindObject(Form("%sCl2MC%s", res->GetName(), suffix[itq])));
          mgr->ConnectInput(taskCl,  2, evInfoContainer);
          mgr->ConnectOutput(taskCl, 1, mgr->CreateContainer(taskCl->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Calibration", mgr->GetCommonFileName())));
        }
      }
    }
  }

  // TRD alignment
  if(TESTBIT(map, AliTRDpwgppHelper::kAlignment)){
    AliTRDalignmentTask *taskAlign(NULL);
    mgr->AddTask(taskAlign = new AliTRDalignmentTask((char*)"TRDalignment"));
    taskAlign->SetDebugLevel(0);
    //AliLog::SetClassDebugLevel("AliTRDalignmentTask", 5);  
    mgr->ConnectInput(taskAlign,  0, mgr->GetCommonInputContainer());  
    mgr->ConnectInput(taskAlign,  1, ci[0]);
    mgr->ConnectInput(taskAlign,  2, evInfoContainer);
    mgr->ConnectInput(taskAlign,  3, ci[4]);                          // conect clusters container
    mgr->ConnectOutput(taskAlign, 1, mgr->CreateContainer(Form("h%s", taskAlign->GetName()), TObjArray::Class(), AliAnalysisManager::kExchangeContainer));
    mgr->ConnectOutput(taskAlign, 2, mgr->CreateContainer(taskAlign->GetName(), TTree::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Alignment",mgr->GetCommonFileName())));
  }
}

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