ROOT logo
//_________________________________
// Femto analysis
//_________________________________

void runBatch() {
  TStopwatch timer;
  timer.Start();


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


  gSystem->Load("libProofPlayer.so");
  gSystem->Load("libVMC.so");


//_______ Load libraries
  gSystem->Load("libAOD");
  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");

   Bool_t useParFiles   = kFALSE;  
   Bool_t useTenderPars = kFALSE;
   Bool_t usePWGCFParFiles = kFALSE;
   
   Bool_t useMC = kFALSE;

   TString format = "aod";
   //format = "aod";
   format.ToLower();

//______ Dynamic Path ______
   if (usePWGCFParFiles) {
   TString dynpath(".:");
   dynpath += gSystem->GetDynamicPath();
   gSystem->SetDynamicPath(dynpath);
    //char dynpath[10000];
    //sprintf(dynpath, ".:%s", gSystem->GetDynamicPath());
    //gSystem->SetDynamicPath(dynpath);
  }

  // Use precompiled libraries for the analysis framework
  if (useParFiles)
    setupPar("STEERBase");
	  if (gSystem->Load("libSTEERBase.so")<0) {
    cout << "Cannot load libSTEERBase.so . Exiting" << endl;
    exit(0);
  }
  gSystem->Load("libVMC.so");

  if (useParFiles)
    setupPar("ESD");
  if (gSystem->Load("libESD.so")<0) {
    cout << "Cannot load libESD.so . Exiting" << endl;
    exit(0);
  }

  if (useParFiles)
    setupPar("AOD");
  if (gSystem->Load("libAOD.so")<0) {
    cout << "Cannot load libAOD.so . Exiting" << endl;
    exit(0);
  }

  if (useParFiles)
    setupPar("ANALYSIS");
  if (gSystem->Load("libANALYSIS.so")<0) {
    cout << "Cannot load libANALYSIS.so . Exiting" << endl;
    exit(0);
  }

  if (useParFiles)
    setupPar("ANALYSISalice");
  if (gSystem->Load("libANALYSISalice.so")<0) {
    cout << "Cannot load libANALYSISalice.so . Exiting" << endl;
    exit(0);
  }
  

  //____________________________________________________//
  //_____________Setting up PWGCFAOD.par_________________//

  // if (usePWGCFParFiles)
  //   setupPar("PWGCFAOD");
  // if (gSystem->Load("libPWGCFAOD.so")<0) {
  //   cout << "Cannot load libPWGCFAOD.so . Exiting" << endl;
  //   exit(0);
  // }
  //____________________________________________________//
  //_____________Setting up PWGCFfemtoscopy.par__________//
  if (usePWGCFParFiles)
    setupPar("PWGCFfemtoscopy");
  if (gSystem->Load("libPWGCFfemtoscopy.so")<0) {
    cout << "Cannot load libPWGCFfemtoscopy.so . Exiting" << endl;
    exit(0);
  }
  //____________________________________________________//
  //_____________Setting up PWGCFfemtoscopyUser.par______//
    if (usePWGCFParFiles)
    setupPar("PWGCFfemtoscopyUser");
  if (gSystem->Load("libPWGCFfemtoscopyUser.so")<0) {
    cout << "Cannot load libPWGCFfemtoscopyUser.so . Exiting" << endl;
    exit(0);
    }



   cout <<"_____GetDynamicPath______\n " <<gSystem->GetDynamicPath() <<endl;  


//____________ include path
   gSystem->AddIncludePath(Form("-I\"%s/include\"", gSystem->Getenv("ALICE_ROOT")));
   gROOT->ProcessLine(Form(".include %s/include", gSystem->ExpandPathName("$ALICE_ROOT")));




  
  //_________________________________________________ 
  //_______Create chain for Alien data collection __________
  
   const char *collectionfile="wn.xml";
  
  //____________________________________________//
  //Usage of event tags
  // AliTagAnalysis *analysis = new AliTagAnalysis();
  // TChain *chain = 0x0;
  // chain = analysis->CreateChainFromCollection(collectionfile,"esdTree");

  // gROOT->LoadMacro("./CreateESDChain.C");
  // const char* chainlistfile = "./list.ESD.txt";
  // chain = CreateESDChain(chainlistfile,500);

  TChain *chain = new TChain("aodTree");
  //chain->Add("../Data/LHC10h/AOD/139465/AliAOD.root");
  ifstream *istr = new ifstream(collectionfile);

  char fname[2000];
  char pname[2000];
  while (!istr->eof()) {
    fname[0] = '\0';
    (*istr) >> fname;
    if (strlen(fname) > 10) {
      sprintf(pname, "alien://%s", fname);
      chain->Add(pname);
    }
    }
  

/*
//__________________________________________________
//___________Create chain for Local data files ____________

  gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
  TChain* chain = CreateESDChain("files.txt", 2);
*/



  //___________ Analysis  __________________________

  //______ Make the analysis manager
  AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");

  //______ Set ESD InputHandler
  AliAODInputHandler* aodH = new AliAODInputHandler;
  mgr->SetInputEventHandler(aodH);

  //AliESDInputHandler* esdH = new AliESDInputHandler;
  //mgr->SetInputEventHandler(esdH);
  
  //______ Set MC EventHandler
  //AliMCEventHandler *mcH = new AliMCEventHandler;
  //mgr->SetMCtruthEventHandler(mcH);

  //______ Set Print Debug Level
  mgr->SetDebugLevel(0);  //0, 1, 2, 3 ...
  
  

  //AddTaskPIDResponse
  gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
  AliAnalysisTaskSE *pidresponse = AddTaskPIDResponse(kTRUE,kFALSE);

                                                                           
   //gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
   //AliCentralitySelectionTask *centrality = AddTaskCentrality();

  //________AddTaskFemto_______________
    gROOT->LoadMacro("AddTaskFemto.C");
  AliAnalysisTaskFemto *taskfemto = AddTaskFemto("ConfigFemtoAnalysis.C");
  taskfemto->SelectCollisionCandidates(AliVEvent::kCentral|AliVEvent::kSemiCentral|AliVEvent::kMB);
  //taskfemto->SelectCollisionCandidates(AliVEvent::kMB);

  //____________________________________________//
  // Run the analysis
  if (!mgr->InitAnalysis()) return;
  mgr->PrintStatus();
  mgr->StartAnalysis("local",chain);

  timer.Stop();
  timer.Print();
}


//*********************************************
//____________________________________________
Int_t setupPar(const char* pararchivename) {
  ///////////////////
  // Setup PAR File//
  ///////////////////
  if (pararchivename) {
    char processline[1024];
    sprintf(processline,".! tar xvzf %s.par",pararchivename);
    gROOT->ProcessLine(processline);
    const char* 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");
      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");
      printf("*******************************\n");
      gROOT->Macro("PROOF-INF/SETUP.C");
    }
    
    gSystem->ChangeDirectory("../");
  }

  return 1;
}
 runBatch.C:1
 runBatch.C:2
 runBatch.C:3
 runBatch.C:4
 runBatch.C:5
 runBatch.C:6
 runBatch.C:7
 runBatch.C:8
 runBatch.C:9
 runBatch.C:10
 runBatch.C:11
 runBatch.C:12
 runBatch.C:13
 runBatch.C:14
 runBatch.C:15
 runBatch.C:16
 runBatch.C:17
 runBatch.C:18
 runBatch.C:19
 runBatch.C:20
 runBatch.C:21
 runBatch.C:22
 runBatch.C:23
 runBatch.C:24
 runBatch.C:25
 runBatch.C:26
 runBatch.C:27
 runBatch.C:28
 runBatch.C:29
 runBatch.C:30
 runBatch.C:31
 runBatch.C:32
 runBatch.C:33
 runBatch.C:34
 runBatch.C:35
 runBatch.C:36
 runBatch.C:37
 runBatch.C:38
 runBatch.C:39
 runBatch.C:40
 runBatch.C:41
 runBatch.C:42
 runBatch.C:43
 runBatch.C:44
 runBatch.C:45
 runBatch.C:46
 runBatch.C:47
 runBatch.C:48
 runBatch.C:49
 runBatch.C:50
 runBatch.C:51
 runBatch.C:52
 runBatch.C:53
 runBatch.C:54
 runBatch.C:55
 runBatch.C:56
 runBatch.C:57
 runBatch.C:58
 runBatch.C:59
 runBatch.C:60
 runBatch.C:61
 runBatch.C:62
 runBatch.C:63
 runBatch.C:64
 runBatch.C:65
 runBatch.C:66
 runBatch.C:67
 runBatch.C:68
 runBatch.C:69
 runBatch.C:70
 runBatch.C:71
 runBatch.C:72
 runBatch.C:73
 runBatch.C:74
 runBatch.C:75
 runBatch.C:76
 runBatch.C:77
 runBatch.C:78
 runBatch.C:79
 runBatch.C:80
 runBatch.C:81
 runBatch.C:82
 runBatch.C:83
 runBatch.C:84
 runBatch.C:85
 runBatch.C:86
 runBatch.C:87
 runBatch.C:88
 runBatch.C:89
 runBatch.C:90
 runBatch.C:91
 runBatch.C:92
 runBatch.C:93
 runBatch.C:94
 runBatch.C:95
 runBatch.C:96
 runBatch.C:97
 runBatch.C:98
 runBatch.C:99
 runBatch.C:100
 runBatch.C:101
 runBatch.C:102
 runBatch.C:103
 runBatch.C:104
 runBatch.C:105
 runBatch.C:106
 runBatch.C:107
 runBatch.C:108
 runBatch.C:109
 runBatch.C:110
 runBatch.C:111
 runBatch.C:112
 runBatch.C:113
 runBatch.C:114
 runBatch.C:115
 runBatch.C:116
 runBatch.C:117
 runBatch.C:118
 runBatch.C:119
 runBatch.C:120
 runBatch.C:121
 runBatch.C:122
 runBatch.C:123
 runBatch.C:124
 runBatch.C:125
 runBatch.C:126
 runBatch.C:127
 runBatch.C:128
 runBatch.C:129
 runBatch.C:130
 runBatch.C:131
 runBatch.C:132
 runBatch.C:133
 runBatch.C:134
 runBatch.C:135
 runBatch.C:136
 runBatch.C:137
 runBatch.C:138
 runBatch.C:139
 runBatch.C:140
 runBatch.C:141
 runBatch.C:142
 runBatch.C:143
 runBatch.C:144
 runBatch.C:145
 runBatch.C:146
 runBatch.C:147
 runBatch.C:148
 runBatch.C:149
 runBatch.C:150
 runBatch.C:151
 runBatch.C:152
 runBatch.C:153
 runBatch.C:154
 runBatch.C:155
 runBatch.C:156
 runBatch.C:157
 runBatch.C:158
 runBatch.C:159
 runBatch.C:160
 runBatch.C:161
 runBatch.C:162
 runBatch.C:163
 runBatch.C:164
 runBatch.C:165
 runBatch.C:166
 runBatch.C:167
 runBatch.C:168
 runBatch.C:169
 runBatch.C:170
 runBatch.C:171
 runBatch.C:172
 runBatch.C:173
 runBatch.C:174
 runBatch.C:175
 runBatch.C:176
 runBatch.C:177
 runBatch.C:178
 runBatch.C:179
 runBatch.C:180
 runBatch.C:181
 runBatch.C:182
 runBatch.C:183
 runBatch.C:184
 runBatch.C:185
 runBatch.C:186
 runBatch.C:187
 runBatch.C:188
 runBatch.C:189
 runBatch.C:190
 runBatch.C:191
 runBatch.C:192
 runBatch.C:193
 runBatch.C:194
 runBatch.C:195
 runBatch.C:196
 runBatch.C:197
 runBatch.C:198
 runBatch.C:199
 runBatch.C:200
 runBatch.C:201
 runBatch.C:202
 runBatch.C:203
 runBatch.C:204
 runBatch.C:205
 runBatch.C:206
 runBatch.C:207
 runBatch.C:208
 runBatch.C:209
 runBatch.C:210
 runBatch.C:211
 runBatch.C:212
 runBatch.C:213
 runBatch.C:214
 runBatch.C:215
 runBatch.C:216
 runBatch.C:217
 runBatch.C:218
 runBatch.C:219
 runBatch.C:220
 runBatch.C:221
 runBatch.C:222
 runBatch.C:223
 runBatch.C:224
 runBatch.C:225
 runBatch.C:226
 runBatch.C:227
 runBatch.C:228
 runBatch.C:229
 runBatch.C:230
 runBatch.C:231
 runBatch.C:232
 runBatch.C:233
 runBatch.C:234
 runBatch.C:235
 runBatch.C:236
 runBatch.C:237
 runBatch.C:238
 runBatch.C:239
 runBatch.C:240
 runBatch.C:241
 runBatch.C:242
 runBatch.C:243
 runBatch.C:244
 runBatch.C:245