ROOT logo
// RS: This is macro to build an analysis train which will run from the reco loop
//     Uses special AliRecoInputHandler 
// Should be attached in rec.C as
// AliReconstruction rec; rec.SetAnalysisMacro(thisMacroPath);

void LoadLibraries();
void AddAnalysisTasks(Bool_t writeITSTP=kFALSE, Bool_t useTPCcrv=kFALSE); 


void RecoQAtrain(Bool_t writeITSTP=kFALSE, Bool_t useTPCcrv=kFALSE)
{
  //
  TGrid::Connect("alien://");
  if (!gGrid || !gGrid->IsConnected()) {
    ::Error("QAtrain", "No grid connection");
    return;
  }   
  // Set temporary merging directory to current one
  gSystem->Setenv("TMPDIR", gSystem->pwd());
  // Set temporary compilation directory to current one
  gSystem->SetBuildDir(gSystem->pwd(), kTRUE);
  // Load libraries
  LoadLibraries();
  printf("Include path: %s\n", gSystem->GetIncludePath());
  // Create manager
  AliAnalysisManager *mgr  = new AliAnalysisManager("Analysis", "Reco QA train");
  // Input handler
  AliRecoInputHandler *esdHandler = new AliRecoInputHandler();
  esdHandler->SetReadFriends(kTRUE);
  esdHandler->SetActiveBranches("ESDfriend");
  mgr->SetInputEventHandler(esdHandler);
  //  
  // AnalysisTasks
  AddAnalysisTasks(writeITSTP,useTPCcrv);
  //
  if (!mgr->InitAnalysis()) printf("Failed to initialize Reco Analysis");
}

void LoadLibraries()
{
  gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TRD -I$ALICE_ROOT/PWGPP -I$ALICE_ROOT/PWGPP/TRD");
  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libCORRFW");
  gSystem->Load("libTENDER");
  //  gSystem->Load("libPWG0base.so");
  //  gSystem->Load("libPWG0dep.so");
  //  gSystem->Load("libPWG0selectors.so");
  gSystem->Load("libPWGPP.so");
}

void AddAnalysisTasks(Bool_t writeITSTP, Bool_t useTPCcrv)
{
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  mgr->SetCommonFileName("RecoQAresults.root");
  //
  // Event Statistics (Jan Fiete)
  gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
  AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(kFALSE /*MC*/);
  //
  // add standard ITSAlignQA task with only SDD calibration histos activated
  gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskITSAlign.C");
  AliAnalysisTaskITSAlignQA *itsAlign = AddTaskITSAlign(0,2011,kTRUE);
  itsAlign->SetLoadGeometryFromOCDB(kFALSE);
  itsAlign->SetDoSPDResiduals(kFALSE);
  itsAlign->SetDoSDDResiduals(kFALSE);
  itsAlign->SetDoSSDResiduals(kFALSE);
  itsAlign->SetDoSDDDriftTime(kFALSE);
  itsAlign->SetMinMaxMult(20.,1070.);
  itsAlign->SetUseTPCMomentum(useTPCcrv);
  itsAlign->SetDoFillTPTree(writeITSTP);
  //
  if (writeITSTP) {
    AliAnalysisDataContainer *coutputTP = mgr->CreateContainer("ITSSumTP",
							       TTree::Class(),
							       AliAnalysisManager::kOutputContainer,
							       "AODtpITS.root" );
    mgr->ConnectOutput(itsAlign, 2, coutputTP);
  }
  //
}
 RecoQAtrain.C:1
 RecoQAtrain.C:2
 RecoQAtrain.C:3
 RecoQAtrain.C:4
 RecoQAtrain.C:5
 RecoQAtrain.C:6
 RecoQAtrain.C:7
 RecoQAtrain.C:8
 RecoQAtrain.C:9
 RecoQAtrain.C:10
 RecoQAtrain.C:11
 RecoQAtrain.C:12
 RecoQAtrain.C:13
 RecoQAtrain.C:14
 RecoQAtrain.C:15
 RecoQAtrain.C:16
 RecoQAtrain.C:17
 RecoQAtrain.C:18
 RecoQAtrain.C:19
 RecoQAtrain.C:20
 RecoQAtrain.C:21
 RecoQAtrain.C:22
 RecoQAtrain.C:23
 RecoQAtrain.C:24
 RecoQAtrain.C:25
 RecoQAtrain.C:26
 RecoQAtrain.C:27
 RecoQAtrain.C:28
 RecoQAtrain.C:29
 RecoQAtrain.C:30
 RecoQAtrain.C:31
 RecoQAtrain.C:32
 RecoQAtrain.C:33
 RecoQAtrain.C:34
 RecoQAtrain.C:35
 RecoQAtrain.C:36
 RecoQAtrain.C:37
 RecoQAtrain.C:38
 RecoQAtrain.C:39
 RecoQAtrain.C:40
 RecoQAtrain.C:41
 RecoQAtrain.C:42
 RecoQAtrain.C:43
 RecoQAtrain.C:44
 RecoQAtrain.C:45
 RecoQAtrain.C:46
 RecoQAtrain.C:47
 RecoQAtrain.C:48
 RecoQAtrain.C:49
 RecoQAtrain.C:50
 RecoQAtrain.C:51
 RecoQAtrain.C:52
 RecoQAtrain.C:53
 RecoQAtrain.C:54
 RecoQAtrain.C:55
 RecoQAtrain.C:56
 RecoQAtrain.C:57
 RecoQAtrain.C:58
 RecoQAtrain.C:59
 RecoQAtrain.C:60
 RecoQAtrain.C:61
 RecoQAtrain.C:62
 RecoQAtrain.C:63
 RecoQAtrain.C:64
 RecoQAtrain.C:65
 RecoQAtrain.C:66
 RecoQAtrain.C:67
 RecoQAtrain.C:68
 RecoQAtrain.C:69
 RecoQAtrain.C:70
 RecoQAtrain.C:71
 RecoQAtrain.C:72
 RecoQAtrain.C:73
 RecoQAtrain.C:74
 RecoQAtrain.C:75
 RecoQAtrain.C:76
 RecoQAtrain.C:77
 RecoQAtrain.C:78
 RecoQAtrain.C:79
 RecoQAtrain.C:80
 RecoQAtrain.C:81
 RecoQAtrain.C:82