ROOT logo
//______________________________________________________________________________
void AnalysisTrainCAF(Int_t nEvents = 10000, Int_t nOffset = 0, char *ds = "/PWG4/kleinb/LHC09a1_test500")
{
  // Example of running analysis train in CAF. To run in debug mode:
  //  - export ROOTSYS=debug  on your local client
  //  - un-comment gProof->ClearPackages()
  //  - un-comment lines with debugging info


  Bool_t debug         = kTRUE;
  Bool_t useMC         = kTRUE;
  Bool_t readTR        = kFALSE;
  Bool_t bPROOF        = kFALSE;
  Bool_t bLOCALPAR     = kFALSE;  // flag that swtiches on loading of local par files insead of loading libs, needed for grid and local testing

    
  Int_t iAODanalysis   = 1;
  Int_t iAODhandler    = 1;
  Int_t iESDfilter     = 1;  // Only active if iAODanalysis=0
  Int_t iJETAN         = 1;
  Int_t iJETANESD      = 0;
  Int_t iJETANMC       = 0;
  Int_t iJETANMC2       = 0;
  Int_t iFASTJET     = 1;
  Int_t iDIJETAN       = 0;
  Int_t iPWG4SPECTRUM  = 0;
  Int_t iPWG4JFSYSTEMATICS  = 0;
  Int_t iPWG4JETCORRECTION  = 0;
  Int_t iPWG4THREEJETS  = 0;
  Int_t iPWG4UE        = 0;
  Int_t iPWG4PID        = 0;

  if (iAODanalysis) {
    useMC = kFALSE;
    readTR = kFALSE;
    iESDfilter = 0;
  }    
  if (iJETAN) iESDfilter=1;
  if (iESDfilter) iAODhandler=1;
  
  // Dataset from CAF
  TString dataset(ds);
  TChain *chain = 0;
  // CKB quick hack for local analysis
  gROOT->LoadMacro("CreateESDChain.C");
  TChain *chain = CreateChain("aodTree",ds,1);
  //  TChain *chain = CreateChain("esdTree",ds,100);
  //  chain = new TChain("aodTree");
  //  chain->Add("/Users/kleinb/bigdisk/1/LHC09a3/001/AliAOD.root");

 
  printf("==================================================================\n");
  printf("===========    RUNNING ANALYSIS TRAIN IN CAF MODE    =============\n");
  printf("==================================================================\n");
  if (iAODanalysis) printf("=  AOD analysis on dataset: %s\n", dataset.Data());
  else              printf("=  ESD analysis on dataset: %s\n", dataset.Data());
  if (iESDfilter)   printf("=  ESD filter                                                     =\n");
  if (iJETAN)       printf("=  Jet analysis from AOD                                         =\n");
  if (iJETANESD)    printf("=  Jet analysis from ESD                                         =\n");
  if (iJETANMC)     printf("=  Jet analysis from Kinematics                                  =\n");
  if (iJETANMC2)     printf("=  Jet analysis 2 from Kinematics                               =\n");
  if (iFASTJET)     printf("=  Loading FastJet                               =\n");
  if (iDIJETAN)     printf("=  DiJet analysis                                                 =\n");
  if (iPWG4SPECTRUM)printf("=  PWG4 Jet spectrum analysis                                    =\n");
  if (iPWG4JFSYSTEMATICS)printf("=  PWG4 Jet Finder systematics                                   =\n");
  if (iPWG4JETCORRECTION)printf("=  PWG4 Jet Correction                                   =\n");
  if (iPWG4THREEJETS)printf("=  PWG4 Three Jets                                   =\n");

  if (iPWG4UE)      printf("=  PWG4 UE                                                        =\n");
  printf("==================================================================\n");
  if (useMC) printf(":: use MC    TRUE\n");
  else       printf(":: use MC    FALSE\n");
  if (readTR) printf(":: read TR   TRUE\n");
  else        printf(":: read TR   FALSE\n");
  if (debug) printf(":: debugging TRUE\n");
  else       printf(":: debugging FALSE\n");
    
  // Load common libraries
  gSystem->Load("libTree.so");
  gSystem->Load("libGeom.so");
  gSystem->Load("libVMC.so");
  gSystem->Load("libPhysics.so");
  if(iFASTJET){
    gSystem->Load("libCGAL.so");
    gSystem->Load("libfastjet.so");
    gSystem->Load("libsiscone.so");
    gSystem->Load("libSISConePlugin.so");  
  }


  // Reset user processes if CAF if not responding anymore
  // TProof::Reset("alicecaf"); 
  // One may enable a different ROOT version on CAF
  
  //  const char* proofNode = "localhost";
  const char* proofNode = "alicecaf";
  
  // Connect to proof
  if(bPROOF){
    TProof::Mgr(proofNode)->ShowROOTVersions();
    // TProof::Mgr(proofNode)->SetROOTVersion("v5-21-01-alice_dbg");
    TProof::Open(proofNode); 
    
    // Clear packages if changing ROOT version on CAF or local
     gProof->ClearPackages();
    // Enable proof debugging if needed
    //    gProof->SetLogLevel(5);
    // To debug the train in PROOF mode, type in a root session:
    // root[0] TProof::Mgr("lxb6064")->GetSessionLogs()->Display("*",0,10000);
    // Common packages
    // --- Enable the STEERBase Package
    gProof->UploadPackage("STEERBase.par");
    gProof->EnablePackage("STEERBase");	   
    // --- Enable the ESD Package	   
    gProof->UploadPackage("ESD.par");	   
    gProof->EnablePackage("ESD");	   
    // --- Enable the AOD Package	   
    gProof->UploadPackage("AOD.par");	   
    gProof->EnablePackage("AOD");	   
    // --- Enable the ANALYSIS Package	   
    gProof->UploadPackage("ANALYSIS.par"); 
    gProof->EnablePackage("ANALYSIS");	   
    // --- Enable the ANALYSISalice Package
    gProof->UploadPackage("ANALYSISalice.par");
    gProof->EnablePackage("ANALYSISalice");
    
      
    // --- Enable the JETAN Package
    if (iJETAN||iJETANESD||iJETANMC||iJETANMC2) {
      gProof->UploadPackage("JETAN.par");
      gProof->EnablePackage("JETAN");
      if(iFASTJET){
	gProof->UploadPackage("FASTJETAN.par");
	gProof->EnablePackage("FASTJETAN"); 
      }
    }   
    // --- Enable particle correlation analysis
    if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS||iPWG4JETCORRECTION||iPWG4THREEJETS) {
      gProof->UploadPackage("JETAN.par");
      gProof->EnablePackage("JETAN");
      gProof->UploadPackage("PWG4JetTasks.par");
      gProof->EnablePackage("PWG4JetTasks");
    }   
    
  }
  else{

    //  
    // We are local or on grid
    // access remote files in lcoal case as well so open alien connection

    /*
    printf("*** Connect to AliEn ***\n");
    TGrid::Connect("alien://");

    chain = CreateChainFromCollection("wn.xml","esdTree",2); 
    */

    if(bLOCALPAR){
      SetupPar("STEERBase");
      SetupPar("ESD");	 
      SetupPar("AOD");	   
      SetupPar("ANALYSIS"); 
      SetupPar("ANALYSISalice");
      if (iJETAN||iJETANESD||iJETANMC||iJETANMC2){
	SetupPar("JETAN");	   
	if(iFASTJET)	SetupPar("FASTJETAN");	   
      }
      if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS){
	SetupPar("JETAN");	   
	SetupPar("PWG4JetTasks");
      }
    }
    else{
      Printf("Loading Local libs");
      gSystem->Load("libSTEERBase");
      gSystem->Load("libESD");
      gSystem->Load("libAOD");
      gSystem->Load("libANALYSIS");
      gSystem->Load("libANALYSISalice");  
      // --- Enable the JETAN Package
      if (iJETAN||iJETANESD||iJETANMC||iJETANMC2){
	gSystem->Load("libJETAN");
	if(iFASTJET)gSystem->Load("libFASTJETAN");
      }
      // --- Enable particle correlation analysis
      if (iPWG4UE||iPWG4SPECTRUM||iPWG4JFSYSTEMATICS||iPWG4THREEJETS){
	gSystem->Load("libJETAN");
	gSystem->Load("libPWG4JetTasks"); 
      }
    }

  }


    // Make the analysis manager
    AliAnalysisManager *mgr  = new AliAnalysisManager("Analysis Train", "A test setup for the analysis train");
    if (iAODanalysis) {
    // AOD input handler
       AliAODInputHandler *aodH = new AliAODInputHandler();
       mgr->SetInputEventHandler(aodH);
    } else {   
    // ESD input handler
       AliESDInputHandler *esdHandler = new AliESDInputHandler();
       mgr->SetInputEventHandler(esdHandler);
//       esdHandler->SetInactiveBranches("FMD CaloCluster");
    }
    // Monte Carlo handler
    if (useMC && !iAODanalysis) {
       AliMCEventHandler* mcHandler = new AliMCEventHandler();
       mgr->SetMCtruthEventHandler(mcHandler);
       mcHandler->SetReadTR(readTR); 
    }   
    // Top container for input 
    AliAnalysisDataContainer *cinput = 0;
    
    cinput = mgr->GetCommonInputContainer();

    // This container is managed by the AOD handler
    AliAnalysisDataContainer *cout_aod = 0;
    if (iAODhandler) {
       // AOD output handler
       AliAODHandler* aodHandler   = new AliAODHandler();
       //      aodHandler->SetFillAOD(kFALSE);
       mgr->SetOutputEventHandler(aodHandler);       
       aodHandler->SetOutputFileName(Form("AliAODs_pwg4_%07d-%07d.root",nOffset,nOffset+nEvents));
       cout_aod = mgr->GetCommonOutputContainer();
       cout_aod->SetSpecialOutput();
    }   

    // Debugging if needed
    if (debug) mgr->SetDebugLevel(10);
    //    AliLog::EnableDebug(kTRUE);
    AliLog::SetGlobalLogLevel(1);


    if (iESDfilter && !iAODanalysis) {
      gSystem->Load("libCORRFW.so");
      gSystem->Load("libPWGmuon.so");

      gROOT->LoadMacro(Form("%s/ANALYSIS/macros/AddTaskESDFilter.C",gSystem->ExpandPathName("${ALICE_ROOT}")));
      //      gROOT->LoadMacro("AddTaskESDfilter.C");
      AliAnalysisTaskESDfilter *esdfilter = AddTaskESDFilter();
      Printf("esdFilter %p",esdfilter); 
    }   
    // Jet analysis from the AOD
    if (iJETAN) {
      gROOT->LoadMacro("AddTaskJets.C");
      //      AliAnalysisTaskJets *jetanaAOD  = AddTaskJets("AOD","UA1",0.4);
      //      AliAnalysisTaskJets *jetanaAOD  = AddTaskJets("AOD","UA1",0.4);
      //      jetanaAOD->SetNonStdBranch("jetsAOD_UA1");    
      AliAnalysisTaskJets *jetanaAOD  = AddTaskJets();
      Int_t i = AddTaskJetsDelta();
    }   
    // JETANALYSIS from the ESD
    if (iJETANESD && !iAODanalysis) {
      gROOT->LoadMacro("AddTaskJets.C");
      AliAnalysisTaskJets *jetanaESD = AddTaskJets("ESD","UA1");
      jetanaESD->SetDebugLevel(0);
      jetanaESD->SetNonStdBranch("jetsESD");    
    }   
    // Jet analysisMC
    if (iJETANMC ){ 
      gROOT->LoadMacro("AddTaskJets.C");
      //      AliAnalysisTaskJets *jetanaMC =  AddTaskJets("AODMC","UA1",0.4);
      AliAnalysisTaskJets *jetanaMC =  AddTaskJets("AODMC","UA1",0.4);
      jetanaMC->SetDebugLevel(0);
      jetanaMC->SetNonStdBranch("jetsMC_UA1");
    }   
    if (iJETANMC2 ){ 
      gROOT->LoadMacro("AddTaskJets.C");
      //      AliAnalysisTaskJets *jetanaMC2 = AddTaskJets("AODMC2","UA1",0.4);
      AliAnalysisTaskJets *jetanaMC2 = AddTaskJets("AODMC2","UA1",0.4);
      jetanaMC2->SetDebugLevel(0);
      jetanaMC2->SetNonStdBranch("jetsMC2_UA1");
    }   
    // Dijet analysis
    if(iDIJETAN){
      gROOT->LoadMacro("AddTaskDiJets.C");
      AliAnalysisTaskDiJets *dijetana  = AddTaskDiJets();
    }
    if (iPWG4SPECTRUM) {
      gROOT->LoadMacro("AddTaskJetSpectrum2.C");
      AliAnalysisTaskJetSpectrum2* pwg4spec = AddTaskJetSpectrum2();
      pwg4spec->SetAODInput(kTRUE);
      pwg4spec->SetBranchRec("jets");
      pwg4spec->SetAnalysisType(0);
      pwg4spec->SetDebugLevel(0);
    }   
    if (iPWG4JFSYSTEMATICS) {
      gROOT->LoadMacro("AddTaskJFSystematics.C");
      AliAnalysisTaskJFSystematics* pwg4jfs = AddTaskJFSystematics("jetsMC","jets");
      pwg4jfs->SetAODInput(kTRUE);
      pwg4jfs->SetDebugLevel(0);
    }   
    if (iPWG4JETCORRECTION) {
      gROOT->LoadMacro("AddTaskJetCorrections.C");
      AliAnalysisTaskJetCorrections* pwg4jc = AddTaskJetCorrections();
      pwg4jc->SetDebugLevel(11);
    }   
    if (iPWG4THREEJETS) {
      gROOT->LoadMacro("AddTaskThreeJets.C");
      AliAnalysisTaskThreeJets* pwg4jjj = AddTaskThreeJets();
      pwg4jjj->SetDebugLevel(11);
    }   
    if (iPWG4UE) {
      gROOT->LoadMacro("AddTaskUE.C");
      AliAnalysisTaskUE* ueana = AddTaskUE();
    }   
    if(iPWG4PID){
      gROOT->LoadMacro("AddTaskPWG4PidDetEx.C");
      AliAnalysisTaskPWG4PidDetEx *taskPid = AddTaskPWG4PidDetEx();
      taskPid->SetDebugLevel(0);
  }
    // Run the analysis
    //    
    if (mgr->InitAnalysis()) {
      mgr->PrintStatus();
      Printf("Chain with %d entries",chain->GetEntries()); 
       if(bPROOF)mgr->StartAnalysis("proof",dataset.Data(), nEvents,nOffset);
       else mgr->StartAnalysis("local",chain,nEvents);
    }   
}
TChain *CreateChainFromCollection(const char* xmlfile, const char *treeName="esdTree",Int_t nFiles = 0)
{
// Create a chain from an alien collection.                                                                          
   TAlienCollection * myCollection  = TAlienCollection::Open(xmlfile);

   if (!myCollection) {
      ::Error("CreateChainSingle", "Cannot create an AliEn collection from %s", xmlfile) ;
     return NULL ;
   }

  TChain* chain = new TChain(treeName);
  myCollection->Reset() ;
  Int_t iCount = 0;
  while ( myCollection->Next() ){
    if(nFiles!=0)iCount++;
    if(iCount > nFiles)break;
    chain->Add(myCollection->GetTURL("")) ;
    Printf("Adding %s",myCollection->GetTURL(""));
  }
  chain->ls();
  return chain;
}


void SetupPar(char* pararchivename)
{
  //Load par files, create analysis libraries                                                         
  //For testing, if par file already decompressed and modified                                        
  //classes then do not decompress.                                                                   

  TString cdir(Form("%s", gSystem->WorkingDirectory() )) ;
  TString parpar(Form("%s.par", pararchivename)) ;
  /*
  if ( gSystem->AccessPathName(parpar.Data()) ) {
    gSystem->ChangeDirectory(gSystem->Getenv("ALICE_ROOT")) ;
    TString processline(Form(".! make %s", parpar.Data())) ;
    gROOT->ProcessLine(processline.Data()) ;
    gSystem->ChangeDirectory(cdir) ;
    processline = Form(".! mv /tmp/%s .", parpar.Data()) ;
    gROOT->ProcessLine(processline.Data()) ;
  }
  */

  if (!gSystem->AccessPathName(pararchivename) ) {
    TString processline = Form(".! tar xvzf %s",parpar.Data()) ;
    gROOT->ProcessLine(processline.Data());
  }

  TString ocwd = gSystem->WorkingDirectory();
  gSystem->ChangeDirectory(pararchivename);

  // check for BUILD.sh and execute                                                                   
  if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
    printf("*******************************\n");
    printf("*** Building PAR archive    ***\n");
    cout<<pararchivename<<endl;
    printf("*******************************\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("*******************************\n");
    printf("*** Setup PAR archive       ***\n");
    cout<<pararchivename<<endl;
    printf("*******************************\n");
    gROOT->Macro("PROOF-INF/SETUP.C");
  }

  gSystem->ChangeDirectory(ocwd.Data());
  printf("Current dir: %s\n", ocwd.Data());
}
 AnalysisTrainCAF.C:1
 AnalysisTrainCAF.C:2
 AnalysisTrainCAF.C:3
 AnalysisTrainCAF.C:4
 AnalysisTrainCAF.C:5
 AnalysisTrainCAF.C:6
 AnalysisTrainCAF.C:7
 AnalysisTrainCAF.C:8
 AnalysisTrainCAF.C:9
 AnalysisTrainCAF.C:10
 AnalysisTrainCAF.C:11
 AnalysisTrainCAF.C:12
 AnalysisTrainCAF.C:13
 AnalysisTrainCAF.C:14
 AnalysisTrainCAF.C:15
 AnalysisTrainCAF.C:16
 AnalysisTrainCAF.C:17
 AnalysisTrainCAF.C:18
 AnalysisTrainCAF.C:19
 AnalysisTrainCAF.C:20
 AnalysisTrainCAF.C:21
 AnalysisTrainCAF.C:22
 AnalysisTrainCAF.C:23
 AnalysisTrainCAF.C:24
 AnalysisTrainCAF.C:25
 AnalysisTrainCAF.C:26
 AnalysisTrainCAF.C:27
 AnalysisTrainCAF.C:28
 AnalysisTrainCAF.C:29
 AnalysisTrainCAF.C:30
 AnalysisTrainCAF.C:31
 AnalysisTrainCAF.C:32
 AnalysisTrainCAF.C:33
 AnalysisTrainCAF.C:34
 AnalysisTrainCAF.C:35
 AnalysisTrainCAF.C:36
 AnalysisTrainCAF.C:37
 AnalysisTrainCAF.C:38
 AnalysisTrainCAF.C:39
 AnalysisTrainCAF.C:40
 AnalysisTrainCAF.C:41
 AnalysisTrainCAF.C:42
 AnalysisTrainCAF.C:43
 AnalysisTrainCAF.C:44
 AnalysisTrainCAF.C:45
 AnalysisTrainCAF.C:46
 AnalysisTrainCAF.C:47
 AnalysisTrainCAF.C:48
 AnalysisTrainCAF.C:49
 AnalysisTrainCAF.C:50
 AnalysisTrainCAF.C:51
 AnalysisTrainCAF.C:52
 AnalysisTrainCAF.C:53
 AnalysisTrainCAF.C:54
 AnalysisTrainCAF.C:55
 AnalysisTrainCAF.C:56
 AnalysisTrainCAF.C:57
 AnalysisTrainCAF.C:58
 AnalysisTrainCAF.C:59
 AnalysisTrainCAF.C:60
 AnalysisTrainCAF.C:61
 AnalysisTrainCAF.C:62
 AnalysisTrainCAF.C:63
 AnalysisTrainCAF.C:64
 AnalysisTrainCAF.C:65
 AnalysisTrainCAF.C:66
 AnalysisTrainCAF.C:67
 AnalysisTrainCAF.C:68
 AnalysisTrainCAF.C:69
 AnalysisTrainCAF.C:70
 AnalysisTrainCAF.C:71
 AnalysisTrainCAF.C:72
 AnalysisTrainCAF.C:73
 AnalysisTrainCAF.C:74
 AnalysisTrainCAF.C:75
 AnalysisTrainCAF.C:76
 AnalysisTrainCAF.C:77
 AnalysisTrainCAF.C:78
 AnalysisTrainCAF.C:79
 AnalysisTrainCAF.C:80
 AnalysisTrainCAF.C:81
 AnalysisTrainCAF.C:82
 AnalysisTrainCAF.C:83
 AnalysisTrainCAF.C:84
 AnalysisTrainCAF.C:85
 AnalysisTrainCAF.C:86
 AnalysisTrainCAF.C:87
 AnalysisTrainCAF.C:88
 AnalysisTrainCAF.C:89
 AnalysisTrainCAF.C:90
 AnalysisTrainCAF.C:91
 AnalysisTrainCAF.C:92
 AnalysisTrainCAF.C:93
 AnalysisTrainCAF.C:94
 AnalysisTrainCAF.C:95
 AnalysisTrainCAF.C:96
 AnalysisTrainCAF.C:97
 AnalysisTrainCAF.C:98
 AnalysisTrainCAF.C:99
 AnalysisTrainCAF.C:100
 AnalysisTrainCAF.C:101
 AnalysisTrainCAF.C:102
 AnalysisTrainCAF.C:103
 AnalysisTrainCAF.C:104
 AnalysisTrainCAF.C:105
 AnalysisTrainCAF.C:106
 AnalysisTrainCAF.C:107
 AnalysisTrainCAF.C:108
 AnalysisTrainCAF.C:109
 AnalysisTrainCAF.C:110
 AnalysisTrainCAF.C:111
 AnalysisTrainCAF.C:112
 AnalysisTrainCAF.C:113
 AnalysisTrainCAF.C:114
 AnalysisTrainCAF.C:115
 AnalysisTrainCAF.C:116
 AnalysisTrainCAF.C:117
 AnalysisTrainCAF.C:118
 AnalysisTrainCAF.C:119
 AnalysisTrainCAF.C:120
 AnalysisTrainCAF.C:121
 AnalysisTrainCAF.C:122
 AnalysisTrainCAF.C:123
 AnalysisTrainCAF.C:124
 AnalysisTrainCAF.C:125
 AnalysisTrainCAF.C:126
 AnalysisTrainCAF.C:127
 AnalysisTrainCAF.C:128
 AnalysisTrainCAF.C:129
 AnalysisTrainCAF.C:130
 AnalysisTrainCAF.C:131
 AnalysisTrainCAF.C:132
 AnalysisTrainCAF.C:133
 AnalysisTrainCAF.C:134
 AnalysisTrainCAF.C:135
 AnalysisTrainCAF.C:136
 AnalysisTrainCAF.C:137
 AnalysisTrainCAF.C:138
 AnalysisTrainCAF.C:139
 AnalysisTrainCAF.C:140
 AnalysisTrainCAF.C:141
 AnalysisTrainCAF.C:142
 AnalysisTrainCAF.C:143
 AnalysisTrainCAF.C:144
 AnalysisTrainCAF.C:145
 AnalysisTrainCAF.C:146
 AnalysisTrainCAF.C:147
 AnalysisTrainCAF.C:148
 AnalysisTrainCAF.C:149
 AnalysisTrainCAF.C:150
 AnalysisTrainCAF.C:151
 AnalysisTrainCAF.C:152
 AnalysisTrainCAF.C:153
 AnalysisTrainCAF.C:154
 AnalysisTrainCAF.C:155
 AnalysisTrainCAF.C:156
 AnalysisTrainCAF.C:157
 AnalysisTrainCAF.C:158
 AnalysisTrainCAF.C:159
 AnalysisTrainCAF.C:160
 AnalysisTrainCAF.C:161
 AnalysisTrainCAF.C:162
 AnalysisTrainCAF.C:163
 AnalysisTrainCAF.C:164
 AnalysisTrainCAF.C:165
 AnalysisTrainCAF.C:166
 AnalysisTrainCAF.C:167
 AnalysisTrainCAF.C:168
 AnalysisTrainCAF.C:169
 AnalysisTrainCAF.C:170
 AnalysisTrainCAF.C:171
 AnalysisTrainCAF.C:172
 AnalysisTrainCAF.C:173
 AnalysisTrainCAF.C:174
 AnalysisTrainCAF.C:175
 AnalysisTrainCAF.C:176
 AnalysisTrainCAF.C:177
 AnalysisTrainCAF.C:178
 AnalysisTrainCAF.C:179
 AnalysisTrainCAF.C:180
 AnalysisTrainCAF.C:181
 AnalysisTrainCAF.C:182
 AnalysisTrainCAF.C:183
 AnalysisTrainCAF.C:184
 AnalysisTrainCAF.C:185
 AnalysisTrainCAF.C:186
 AnalysisTrainCAF.C:187
 AnalysisTrainCAF.C:188
 AnalysisTrainCAF.C:189
 AnalysisTrainCAF.C:190
 AnalysisTrainCAF.C:191
 AnalysisTrainCAF.C:192
 AnalysisTrainCAF.C:193
 AnalysisTrainCAF.C:194
 AnalysisTrainCAF.C:195
 AnalysisTrainCAF.C:196
 AnalysisTrainCAF.C:197
 AnalysisTrainCAF.C:198
 AnalysisTrainCAF.C:199
 AnalysisTrainCAF.C:200
 AnalysisTrainCAF.C:201
 AnalysisTrainCAF.C:202
 AnalysisTrainCAF.C:203
 AnalysisTrainCAF.C:204
 AnalysisTrainCAF.C:205
 AnalysisTrainCAF.C:206
 AnalysisTrainCAF.C:207
 AnalysisTrainCAF.C:208
 AnalysisTrainCAF.C:209
 AnalysisTrainCAF.C:210
 AnalysisTrainCAF.C:211
 AnalysisTrainCAF.C:212
 AnalysisTrainCAF.C:213
 AnalysisTrainCAF.C:214
 AnalysisTrainCAF.C:215
 AnalysisTrainCAF.C:216
 AnalysisTrainCAF.C:217
 AnalysisTrainCAF.C:218
 AnalysisTrainCAF.C:219
 AnalysisTrainCAF.C:220
 AnalysisTrainCAF.C:221
 AnalysisTrainCAF.C:222
 AnalysisTrainCAF.C:223
 AnalysisTrainCAF.C:224
 AnalysisTrainCAF.C:225
 AnalysisTrainCAF.C:226
 AnalysisTrainCAF.C:227
 AnalysisTrainCAF.C:228
 AnalysisTrainCAF.C:229
 AnalysisTrainCAF.C:230
 AnalysisTrainCAF.C:231
 AnalysisTrainCAF.C:232
 AnalysisTrainCAF.C:233
 AnalysisTrainCAF.C:234
 AnalysisTrainCAF.C:235
 AnalysisTrainCAF.C:236
 AnalysisTrainCAF.C:237
 AnalysisTrainCAF.C:238
 AnalysisTrainCAF.C:239
 AnalysisTrainCAF.C:240
 AnalysisTrainCAF.C:241
 AnalysisTrainCAF.C:242
 AnalysisTrainCAF.C:243
 AnalysisTrainCAF.C:244
 AnalysisTrainCAF.C:245
 AnalysisTrainCAF.C:246
 AnalysisTrainCAF.C:247
 AnalysisTrainCAF.C:248
 AnalysisTrainCAF.C:249
 AnalysisTrainCAF.C:250
 AnalysisTrainCAF.C:251
 AnalysisTrainCAF.C:252
 AnalysisTrainCAF.C:253
 AnalysisTrainCAF.C:254
 AnalysisTrainCAF.C:255
 AnalysisTrainCAF.C:256
 AnalysisTrainCAF.C:257
 AnalysisTrainCAF.C:258
 AnalysisTrainCAF.C:259
 AnalysisTrainCAF.C:260
 AnalysisTrainCAF.C:261
 AnalysisTrainCAF.C:262
 AnalysisTrainCAF.C:263
 AnalysisTrainCAF.C:264
 AnalysisTrainCAF.C:265
 AnalysisTrainCAF.C:266
 AnalysisTrainCAF.C:267
 AnalysisTrainCAF.C:268
 AnalysisTrainCAF.C:269
 AnalysisTrainCAF.C:270
 AnalysisTrainCAF.C:271
 AnalysisTrainCAF.C:272
 AnalysisTrainCAF.C:273
 AnalysisTrainCAF.C:274
 AnalysisTrainCAF.C:275
 AnalysisTrainCAF.C:276
 AnalysisTrainCAF.C:277
 AnalysisTrainCAF.C:278
 AnalysisTrainCAF.C:279
 AnalysisTrainCAF.C:280
 AnalysisTrainCAF.C:281
 AnalysisTrainCAF.C:282
 AnalysisTrainCAF.C:283
 AnalysisTrainCAF.C:284
 AnalysisTrainCAF.C:285
 AnalysisTrainCAF.C:286
 AnalysisTrainCAF.C:287
 AnalysisTrainCAF.C:288
 AnalysisTrainCAF.C:289
 AnalysisTrainCAF.C:290
 AnalysisTrainCAF.C:291
 AnalysisTrainCAF.C:292
 AnalysisTrainCAF.C:293
 AnalysisTrainCAF.C:294
 AnalysisTrainCAF.C:295
 AnalysisTrainCAF.C:296
 AnalysisTrainCAF.C:297
 AnalysisTrainCAF.C:298
 AnalysisTrainCAF.C:299
 AnalysisTrainCAF.C:300
 AnalysisTrainCAF.C:301
 AnalysisTrainCAF.C:302
 AnalysisTrainCAF.C:303
 AnalysisTrainCAF.C:304
 AnalysisTrainCAF.C:305
 AnalysisTrainCAF.C:306
 AnalysisTrainCAF.C:307
 AnalysisTrainCAF.C:308
 AnalysisTrainCAF.C:309
 AnalysisTrainCAF.C:310
 AnalysisTrainCAF.C:311
 AnalysisTrainCAF.C:312
 AnalysisTrainCAF.C:313
 AnalysisTrainCAF.C:314
 AnalysisTrainCAF.C:315
 AnalysisTrainCAF.C:316
 AnalysisTrainCAF.C:317
 AnalysisTrainCAF.C:318
 AnalysisTrainCAF.C:319
 AnalysisTrainCAF.C:320
 AnalysisTrainCAF.C:321
 AnalysisTrainCAF.C:322
 AnalysisTrainCAF.C:323
 AnalysisTrainCAF.C:324
 AnalysisTrainCAF.C:325
 AnalysisTrainCAF.C:326
 AnalysisTrainCAF.C:327
 AnalysisTrainCAF.C:328
 AnalysisTrainCAF.C:329
 AnalysisTrainCAF.C:330
 AnalysisTrainCAF.C:331
 AnalysisTrainCAF.C:332
 AnalysisTrainCAF.C:333
 AnalysisTrainCAF.C:334
 AnalysisTrainCAF.C:335
 AnalysisTrainCAF.C:336
 AnalysisTrainCAF.C:337
 AnalysisTrainCAF.C:338
 AnalysisTrainCAF.C:339
 AnalysisTrainCAF.C:340
 AnalysisTrainCAF.C:341
 AnalysisTrainCAF.C:342
 AnalysisTrainCAF.C:343
 AnalysisTrainCAF.C:344
 AnalysisTrainCAF.C:345
 AnalysisTrainCAF.C:346
 AnalysisTrainCAF.C:347
 AnalysisTrainCAF.C:348
 AnalysisTrainCAF.C:349
 AnalysisTrainCAF.C:350
 AnalysisTrainCAF.C:351
 AnalysisTrainCAF.C:352
 AnalysisTrainCAF.C:353
 AnalysisTrainCAF.C:354
 AnalysisTrainCAF.C:355
 AnalysisTrainCAF.C:356
 AnalysisTrainCAF.C:357
 AnalysisTrainCAF.C:358
 AnalysisTrainCAF.C:359
 AnalysisTrainCAF.C:360
 AnalysisTrainCAF.C:361
 AnalysisTrainCAF.C:362
 AnalysisTrainCAF.C:363
 AnalysisTrainCAF.C:364
 AnalysisTrainCAF.C:365
 AnalysisTrainCAF.C:366
 AnalysisTrainCAF.C:367
 AnalysisTrainCAF.C:368
 AnalysisTrainCAF.C:369
 AnalysisTrainCAF.C:370
 AnalysisTrainCAF.C:371
 AnalysisTrainCAF.C:372
 AnalysisTrainCAF.C:373
 AnalysisTrainCAF.C:374
 AnalysisTrainCAF.C:375
 AnalysisTrainCAF.C:376
 AnalysisTrainCAF.C:377
 AnalysisTrainCAF.C:378
 AnalysisTrainCAF.C:379
 AnalysisTrainCAF.C:380
 AnalysisTrainCAF.C:381
 AnalysisTrainCAF.C:382
 AnalysisTrainCAF.C:383
 AnalysisTrainCAF.C:384
 AnalysisTrainCAF.C:385
 AnalysisTrainCAF.C:386
 AnalysisTrainCAF.C:387
 AnalysisTrainCAF.C:388
 AnalysisTrainCAF.C:389
 AnalysisTrainCAF.C:390
 AnalysisTrainCAF.C:391
 AnalysisTrainCAF.C:392
 AnalysisTrainCAF.C:393
 AnalysisTrainCAF.C:394
 AnalysisTrainCAF.C:395
 AnalysisTrainCAF.C:396
 AnalysisTrainCAF.C:397
 AnalysisTrainCAF.C:398
 AnalysisTrainCAF.C:399