ROOT logo
void AnalysisTrainMuonCompLocal()
{
  gSystem->Load("libTree.so");
  gSystem->Load("libGeom.so");
  gSystem->Load("libVMC.so");
  gSystem->Load("libPhysics.so");
  
  // Common packages
  SetupPar("STEERBase");
  SetupPar("ESD");
  SetupPar("AOD");
  SetupPar("ANALYSIS");
  SetupPar("ANALYSISalice");
  // Analysis-specific packages
  SetupPar("PWG3muon");      
  
  gROOT->LoadMacro("AliAnalysisTaskAODvsESD.cxx+");  

  AliTagAnalysis *TagAna = new AliTagAnalysis("ESD"); 
  TagAna->ChainLocalTags("./");

  AliRunTagCuts *runCuts = new AliRunTagCuts();
  AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
  AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
  AliEventTagCuts *evCuts = new AliEventTagCuts();
  
  TChain* chain = 0x0;
  chain = TagAna->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
  chain->SetBranchStatus("*Calo*",0);
  
  // Define the analysis manager
  AliAnalysisManager *mgr  = new AliAnalysisManager("Analysis Train", "Analysis train");
  
  // ESD input handler
  AliESDInputHandler *esdHandler = new AliESDInputHandler();
  esdHandler->SetInactiveBranches("FMD CaloCluster");
  mgr->SetInputEventHandler(esdHandler);
  
  // AOD output handler
  AliAODHandler* aodHandler   = new AliAODHandler();
  aodHandler->SetOutputFileName("AOD.root");  
  mgr->SetOutputEventHandler(aodHandler);
  
  // Set of cuts for the ESD filter
  // standard cuts
  AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Loose");
  esdTrackCutsL->SetMinNClustersTPC(50);
  esdTrackCutsL->SetMaxChi2PerClusterTPC(3.5);
  esdTrackCutsL->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
  esdTrackCutsL->SetRequireTPCRefit(kTRUE);
  esdTrackCutsL->SetMinNsigmaToVertex(3);
  esdTrackCutsL->SetRequireSigmaToVertex(kTRUE);
  esdTrackCutsL->SetAcceptKingDaughters(kFALSE);
  // hard cuts
  AliESDtrackCuts* esdTrackCutsH = new AliESDtrackCuts("AliESDtrackCuts", "Hard");
  esdTrackCutsH->SetMinNClustersTPC(100);
  esdTrackCutsH->SetMaxChi2PerClusterTPC(2.0);
  esdTrackCutsH->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
  esdTrackCutsH->SetRequireTPCRefit(kTRUE);
  esdTrackCutsH->SetMinNsigmaToVertex(2);
  esdTrackCutsH->SetRequireSigmaToVertex(kTRUE);
  esdTrackCutsH->SetAcceptKingDaughters(kFALSE);
  
  AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
  trackFilter->AddCuts(esdTrackCutsL);
  trackFilter->AddCuts(esdTrackCutsH);
  
  // first task - ESD filter task putting standard info in the output generic AOD 
  AliAnalysisTaskESDfilter *esdFilter = new AliAnalysisTaskESDfilter("ESD Filter");
  //esdFilter->SetTrackFilter(trackFilter);
  mgr->AddTask(esdFilter);
  
  // second task - ESD filter task putting muon info in the output generic AOD 
  AliAnalysisTaskESDMuonFilter *esdMuonFilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter");
  mgr->AddTask(esdMuonFilter);
  
  // third task - compare created AOD and exixting ESDs
  AliAnalysisTaskAODvsESD *AODvsESD = new AliAnalysisTaskAODvsESD("aodVsEsd");
  mgr->AddTask(AODvsESD);

  // Input ESD container
  AliAnalysisDataContainer *esdIn = mgr->GetCommonInputContainer();
  // Output AOD container. 
  AliAnalysisDataContainer *aodOut = mgr->GetCommonOutputContainer();
  // Output comparison
  AliAnalysisDataContainer *listOut = mgr->CreateContainer("output2", TList::Class(), AliAnalysisManager::kOutputContainer, "AODvsESDoutput.root");

  // Connect containers to tasks slots
  mgr->ConnectInput(esdFilter,0,esdIn); 
  mgr->ConnectOutput(esdFilter,0,aodOut);
  
  mgr->ConnectInput(esdMuonFilter,0,esdIn);
  mgr->ConnectOutput(esdMuonFilter,0,aodOut);

  mgr->ConnectInput(AODvsESD,0,esdIn);
  mgr->ConnectOutput(AODvsESD,0,listOut);
  
  // Run the analysis
  if (mgr->InitAnalysis()){
    mgr->PrintStatus();
    mgr->StartAnalysis("local",chain);
  }   
}

//______________________________________________________________________________
void SetupPar(char* pararchivename)
{
  if (pararchivename) {
    char processline[1024];
    sprintf(processline,".! tar xvzf %s.par",pararchivename);
    gROOT->ProcessLine(processline);
    TString ocwd = gSystem->WorkingDirectory();
    gSystem->ChangeDirectory(pararchivename);
    
    // check for BUILD.sh and execute
    if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
      printf("*** Building PAR archive    ***\n");
      
      if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
	Error("runProcess","Cannot Build the PAR Archive! - Abort!");
	return -1;
      }
    }
    // check for SETUP.C and execute
    if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
      printf("*** Setup PAR archive       ***\n");
      gROOT->Macro("PROOF-INF/SETUP.C");
    }
    
    gSystem->ChangeDirectory(ocwd.Data());
    printf("Current dir: %s\n", ocwd.Data());
  } 
}
 AnalysisTrainMuonCompLocal.C:1
 AnalysisTrainMuonCompLocal.C:2
 AnalysisTrainMuonCompLocal.C:3
 AnalysisTrainMuonCompLocal.C:4
 AnalysisTrainMuonCompLocal.C:5
 AnalysisTrainMuonCompLocal.C:6
 AnalysisTrainMuonCompLocal.C:7
 AnalysisTrainMuonCompLocal.C:8
 AnalysisTrainMuonCompLocal.C:9
 AnalysisTrainMuonCompLocal.C:10
 AnalysisTrainMuonCompLocal.C:11
 AnalysisTrainMuonCompLocal.C:12
 AnalysisTrainMuonCompLocal.C:13
 AnalysisTrainMuonCompLocal.C:14
 AnalysisTrainMuonCompLocal.C:15
 AnalysisTrainMuonCompLocal.C:16
 AnalysisTrainMuonCompLocal.C:17
 AnalysisTrainMuonCompLocal.C:18
 AnalysisTrainMuonCompLocal.C:19
 AnalysisTrainMuonCompLocal.C:20
 AnalysisTrainMuonCompLocal.C:21
 AnalysisTrainMuonCompLocal.C:22
 AnalysisTrainMuonCompLocal.C:23
 AnalysisTrainMuonCompLocal.C:24
 AnalysisTrainMuonCompLocal.C:25
 AnalysisTrainMuonCompLocal.C:26
 AnalysisTrainMuonCompLocal.C:27
 AnalysisTrainMuonCompLocal.C:28
 AnalysisTrainMuonCompLocal.C:29
 AnalysisTrainMuonCompLocal.C:30
 AnalysisTrainMuonCompLocal.C:31
 AnalysisTrainMuonCompLocal.C:32
 AnalysisTrainMuonCompLocal.C:33
 AnalysisTrainMuonCompLocal.C:34
 AnalysisTrainMuonCompLocal.C:35
 AnalysisTrainMuonCompLocal.C:36
 AnalysisTrainMuonCompLocal.C:37
 AnalysisTrainMuonCompLocal.C:38
 AnalysisTrainMuonCompLocal.C:39
 AnalysisTrainMuonCompLocal.C:40
 AnalysisTrainMuonCompLocal.C:41
 AnalysisTrainMuonCompLocal.C:42
 AnalysisTrainMuonCompLocal.C:43
 AnalysisTrainMuonCompLocal.C:44
 AnalysisTrainMuonCompLocal.C:45
 AnalysisTrainMuonCompLocal.C:46
 AnalysisTrainMuonCompLocal.C:47
 AnalysisTrainMuonCompLocal.C:48
 AnalysisTrainMuonCompLocal.C:49
 AnalysisTrainMuonCompLocal.C:50
 AnalysisTrainMuonCompLocal.C:51
 AnalysisTrainMuonCompLocal.C:52
 AnalysisTrainMuonCompLocal.C:53
 AnalysisTrainMuonCompLocal.C:54
 AnalysisTrainMuonCompLocal.C:55
 AnalysisTrainMuonCompLocal.C:56
 AnalysisTrainMuonCompLocal.C:57
 AnalysisTrainMuonCompLocal.C:58
 AnalysisTrainMuonCompLocal.C:59
 AnalysisTrainMuonCompLocal.C:60
 AnalysisTrainMuonCompLocal.C:61
 AnalysisTrainMuonCompLocal.C:62
 AnalysisTrainMuonCompLocal.C:63
 AnalysisTrainMuonCompLocal.C:64
 AnalysisTrainMuonCompLocal.C:65
 AnalysisTrainMuonCompLocal.C:66
 AnalysisTrainMuonCompLocal.C:67
 AnalysisTrainMuonCompLocal.C:68
 AnalysisTrainMuonCompLocal.C:69
 AnalysisTrainMuonCompLocal.C:70
 AnalysisTrainMuonCompLocal.C:71
 AnalysisTrainMuonCompLocal.C:72
 AnalysisTrainMuonCompLocal.C:73
 AnalysisTrainMuonCompLocal.C:74
 AnalysisTrainMuonCompLocal.C:75
 AnalysisTrainMuonCompLocal.C:76
 AnalysisTrainMuonCompLocal.C:77
 AnalysisTrainMuonCompLocal.C:78
 AnalysisTrainMuonCompLocal.C:79
 AnalysisTrainMuonCompLocal.C:80
 AnalysisTrainMuonCompLocal.C:81
 AnalysisTrainMuonCompLocal.C:82
 AnalysisTrainMuonCompLocal.C:83
 AnalysisTrainMuonCompLocal.C:84
 AnalysisTrainMuonCompLocal.C:85
 AnalysisTrainMuonCompLocal.C:86
 AnalysisTrainMuonCompLocal.C:87
 AnalysisTrainMuonCompLocal.C:88
 AnalysisTrainMuonCompLocal.C:89
 AnalysisTrainMuonCompLocal.C:90
 AnalysisTrainMuonCompLocal.C:91
 AnalysisTrainMuonCompLocal.C:92
 AnalysisTrainMuonCompLocal.C:93
 AnalysisTrainMuonCompLocal.C:94
 AnalysisTrainMuonCompLocal.C:95
 AnalysisTrainMuonCompLocal.C:96
 AnalysisTrainMuonCompLocal.C:97
 AnalysisTrainMuonCompLocal.C:98
 AnalysisTrainMuonCompLocal.C:99
 AnalysisTrainMuonCompLocal.C:100
 AnalysisTrainMuonCompLocal.C:101
 AnalysisTrainMuonCompLocal.C:102
 AnalysisTrainMuonCompLocal.C:103
 AnalysisTrainMuonCompLocal.C:104
 AnalysisTrainMuonCompLocal.C:105
 AnalysisTrainMuonCompLocal.C:106
 AnalysisTrainMuonCompLocal.C:107
 AnalysisTrainMuonCompLocal.C:108
 AnalysisTrainMuonCompLocal.C:109
 AnalysisTrainMuonCompLocal.C:110
 AnalysisTrainMuonCompLocal.C:111
 AnalysisTrainMuonCompLocal.C:112
 AnalysisTrainMuonCompLocal.C:113
 AnalysisTrainMuonCompLocal.C:114
 AnalysisTrainMuonCompLocal.C:115
 AnalysisTrainMuonCompLocal.C:116
 AnalysisTrainMuonCompLocal.C:117
 AnalysisTrainMuonCompLocal.C:118
 AnalysisTrainMuonCompLocal.C:119
 AnalysisTrainMuonCompLocal.C:120
 AnalysisTrainMuonCompLocal.C:121
 AnalysisTrainMuonCompLocal.C:122
 AnalysisTrainMuonCompLocal.C:123
 AnalysisTrainMuonCompLocal.C:124
 AnalysisTrainMuonCompLocal.C:125
 AnalysisTrainMuonCompLocal.C:126
 AnalysisTrainMuonCompLocal.C:127
 AnalysisTrainMuonCompLocal.C:128
 AnalysisTrainMuonCompLocal.C:129
 AnalysisTrainMuonCompLocal.C:130
 AnalysisTrainMuonCompLocal.C:131
 AnalysisTrainMuonCompLocal.C:132
 AnalysisTrainMuonCompLocal.C:133
 AnalysisTrainMuonCompLocal.C:134