ROOT logo
void AnalysisTrainMuonCAF(char* fileout = "AliAOD.root", char *datasetname = "myDataSet", Int_t nev=1234567890)
{
// Macro to produce a generic AOD starting from an ESD file. 
// The AOD is filled with two tasks: 
// 1- with the first one (AliAnalysisTaskESDfilter), 
//    all the branches of the AOD are filled apart from the muons. 
// 2- with the second task (AliAnalysisTaskESDMuonFilter) 
//    muons tracks are added to the tracks branch 
// This macro works on the CAF
// R. Arnaldi 4/5/08

  gSystem->Load("libTree.so");
  gSystem->Load("libGeom.so");
  gSystem->Load("libVMC.so");
  gSystem->Load("libPhysics.so");
    
  // Reset user processes if CAF if not responding anymore
  // TProof::Reset("lxb6046");

  // Connect to proof
  TProof::Open("lxb6046"); // may be username@lxb6046 if user not the same as on local

  // Clear packages if changing ROOT version on CAF or local
  // gProof->ClearPackages();
  // Enable proof debugging if needed
  // gProof->SetLogLevel(5);

  // Common packages
  gProof->UploadPackage("STEERBase.par");
  gProof->EnablePackage("STEERBase");
  gProof->UploadPackage("ESD.par");
  gProof->EnablePackage("ESD");
  gProof->UploadPackage("AOD.par");
  gProof->EnablePackage("AOD");
  gProof->UploadPackage("ANALYSIS.par");
  gProof->EnablePackage("ANALYSIS");
  gProof->UploadPackage("ANALYSISalice.par");
  gProof->EnablePackage("ANALYSISalice");
  // Analysis-specific
  // --- Enable the PWG3base Package
  gProof->UploadPackage("PWG3muon.par");
  gProof->EnablePackage("PWG3muon");

  // Chain from files staged on CAF
  // gROOT->LoadMacro("CreateESDChain.C");
  // TChain* chain = CreateESDChain("ESD1503X_v1.txt",3);
  // TChain* chain = CreateESDChain("ESD82XX_30Kshort.txt", 10);
  
  // Chain from datasets
  gROOT->LoadMacro("CreateChainFromDataSet.C");
  ds = gProof->GetDataSet(datasetname)->GetStagedSubset();
  chain = CreateChainFromDataSet(ds, "esdTree");   
  
  // Make the analysis manager
  AliAnalysisManager *mgr  = new AliAnalysisManager("Analysis Train", "Analysis train");
  
  // ESD input handler
  AliESDInputHandler *esdHandler = new AliESDInputHandler();
  esdHandler->SetInactiveBranches("FMD CaloCluster");
  
  // AOD output handler
  AliAODHandler* aodHandler   = new AliAODHandler();
  aodHandler->SetOutputFileName(fileout);
  //aodHandler->SetOutputFileName("AOD.root");

  mgr->SetInputEventHandler(esdHandler);
  mgr->SetOutputEventHandler(aodHandler);
  
  // Set of cuts plugged into the ESD filter
  // 
  // standard
  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);
  esdTrackCutsH->SetPRange(0.,2.);
  //
  //  muon cuts
  AliESDMuonTrackCuts* esdMuonTrackCuts = new AliESDMuonTrackCuts("AliESDMuonTrackCuts", "test");
  esdMuonTrackCuts->SetPRange(0.,20.);
  //esdMuonTrackCuts->SetPtRange(0.,0.5);   // example of kinematic cuts that can be applied
  
  // track filter (to reject tracks not surviving the cuts - refers to all particles apart from muons)
  AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
  trackFilter->AddCuts(esdTrackCutsH);
  
  // muon track filter  (to reject muon tracks not surviving the cuts)
  AliAnalysisFilter* trackMuonFilter = new AliAnalysisFilter("trackMuonFilter");
  trackMuonFilter->AddCuts(esdMuonTrackCuts);

  // ESD filter task putting standard info to output generic AOD 
  AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");
  //esdfilter->SetTrackFilter(trackFilter);
  esdfilter->SetDebugLevel(10);
  mgr->AddTask(esdfilter);
  
  // ESD filter task putting muon info to output generic AOD 
  AliAnalysisTaskESDMuonFilter *esdmuonfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter");
  esdmuonfilter->SetTrackFilter(trackMuonFilter);
  mgr->AddTask(esdmuonfilter);

  // Containers for input/output
  AliAnalysisDataContainer *cin_esd = mgr->GetCommonInputContainer();
  // Output AOD container. 
  AliAnalysisDataContainer *cout_aod = mgr->GetCommonOutputContainer();
        						    
  // Connect containers to tasks slots
  mgr->ConnectInput  (esdfilter,  0, cin_esd  );
  mgr->ConnectOutput (esdfilter,  0, cout_aod );

  mgr->ConnectInput  (esdmuonfilter,  0, cin_esd);
  mgr->ConnectOutput (esdmuonfilter,  0, cout_aod );

  //
  // Run the analysis
  //	
  if (mgr->InitAnalysis()) {
      mgr->PrintStatus();
      mgr->StartAnalysis("proof",chain,nev);
  }   
}

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