ROOT logo
//
// Macro to run performance QA train
// locally. The TPC performance task is attached.
// 
//
//13.10.2009 -  J.Otwinowski@gsi.de
//
//

/*
Quick Start:

1. Start train macro (real data from GSI::SE). Source your own Alien environment.

source /u/jacek/alien/set_alien_env.sh
aliroot -b -q 'RunPerformanceTrain.C("AliESDs.root",2,kFALSE,kTRUE,kTRUE)'

3. Start train macro (real data from lustre)

aliroot -b -q 'RunPerformanceTrain.C("AliESDs.root",2,kFALSE,kTRUE,kFALSE)'

*/

//_____________________________________________________________________________
void RunPerformanceTrain(Char_t *file="esd.root", Int_t runNumber = 2, const char* triggerClass ="CINT1B-ABCE-NOPF-ALL", Bool_t bUseMCInfo=kFALSE, Bool_t bUseESDfriend=kTRUE, Bool_t bGrid=kFALSE)
{
  //
  // Grid settings
  // use GSI::SE
  if(bGrid) {
    gSystem->Setenv("alien_CLOSE_SE","ALICE::GSI::SE");
    TGrid * alien = TGrid::Connect("alien://",0,0,"t");
    gSystem->Setenv("alien_CLOSE_SE","ALICE::GSI::SE");
  }

  //
  // Train Configuration
  //
  Int_t       iPWGPPperfTPC       = 1;      // Test TPC performance
  Int_t       iPWGPPperfTRD       = 0;      // Test TRD performance
  Int_t       iPWGPPperfITS       = 0;      // Test ITS performance
  Int_t       iPWGPPperfCalo      = 0;      // Test Calo performance
  Int_t       iPWGPPperfMuonTrig  = 0;      // Test Muon Trigger performance
  Int_t       iPWGPPperfMuonEff   = 0;      // Test Muon Efficiency performance
  Int_t       iPWGPPperfTOF       = 0;      // Test TOF-TPC matching performance
  Int_t       iPWGPPperfPrimVertex = 0;     // Test Primary Vertex performance
  Int_t       iPWGPPv0QA          = 0;      // V0 algorithm QA task

  //
  // Load Libraries
  //
  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libTENDER");
  gSystem->Load("libCORRFW");

  gSystem->Load("libTPCcalib.so");
  gSystem->Load("libPWGPP");

  gSystem->Load("libPHOSUtils");
  gSystem->Load("libEMCALUtils");
  gSystem->Load("libPWG4PartCorrBase");
  gSystem->Load("libPWG4PartCorrDep");

  gSystem->Load("libPWGmuon.so"); // The class is here

  //
  // OCDB Configuration 
  //
  AliCDBManager *cdbManager = AliCDBManager::Instance();
  cdbManager->SetDefaultStorage("local:///lustre/alice/alien/alice/data/2009/OCDB");
  //cdbManager->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  //cdbManager->SetSpecificStorage("GRP/GRP/Data", Form("local://%s",gSystem->pwd()));
  cdbManager->SetRun(runNumber);
  //cdbManager->SetCacheFlag(kFALSE);
  // initialize magnetic field from the GRP manager.
  //if(magField==0) TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 0., 0., AliMagF::k2kG));
  //if(magField==1) TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k2kG));
  //if(magField==2) TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG));

  /*
  AliGRPManager grpMan;
  grpMan.ReadGRPEntry();
  grpMan.SetMagField();
  AliRunInfo *runInfo = grpMan.GetRunInfo();
 
  //
  // Load geometry
  //
  */
  AliGeomManager::LoadGeometry();

  //
  // Swtich off all AliInfo (too much output!)
  //
  AliLog::SetGlobalLogLevel(AliLog::kError);

  //
  // Create input ESD chain
  //
  /*
  gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
  TChain* chain = CreateESDChain(list,nFiles,fistFile);
  if(!chain) { 
    Error("RunPerformanceTrain","ESD chain not created!");
    return;
  }
  */
  TChain  *chain = new TChain("esdTree");
  if(!chain) { 
    Error("RunPerformanceTrain","ESD chain not created!");
    return;
  }
  chain->Add(file);
  chain->Lookup();

  //
  // Create analysis manager
  //
  AliAnalysisManager *mgr = new AliAnalysisManager;
  if(!mgr) { 
    Error("RunPerformanceTrain","AliAnalysisManager not set!");
    return;
  }

  //
  // Set ESD input handler
  //
  AliESDInputHandler* esdH = new AliESDInputHandler;
  if(!esdH) { 
    Error("RunPerformanceTrain","AliESDInputHandler not created!");
    return;
  }
  if(bUseESDfriend) esdH->SetActiveBranches("ESDfriend");
  mgr->SetInputEventHandler(esdH);

  /*
  //
  // Set RecPoints and ESD input handler
  //
  AliESDInputHandlerRP* rpH = new AliESDInputHandlerRP;
  if(!rpH) { 
    Error("RunPerformanceTrain","AliESDInputHandlerRP not created!");
    return;
  }
  if(bUseESDfriend) rpH->SetActiveBranches("ESDfriend");
  mgr->SetInputEventHandler(rpH);
  */

  //
  // Set MC input handler
  //
  if(bUseMCInfo) {
    AliMCEventHandler* mcH = new AliMCEventHandler;
    if(!mcH) { 
      Error("RunPerformanceTrain","AliMCEventHandler not created!");
      return;
    }
    mcH->SetReadTR(kTRUE);
    mgr->SetMCtruthEventHandler(mcH);
  }


  //
  // Add task to AliAnalysisManager
  //

  //
  // TPC performance
  //
  if(iPWGPPperfTPC) {
    gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskPerformanceTPC.C");
    AliPerformanceTask *tpcQA = AddTaskPerformanceTPC(bUseMCInfo,bUseESDfriend,triggerClass);
    if(!tpcQA) { 
      Error("RunPerformanceTrain","AliPerformanceTask not created!");
      return;
    }
  } 
  else {
    Printf("RunPerformanceTrain: TPC Performance - EXCLUDED!");
  }
  //
  // TRD perormance
  //
  if(iPWGPPperfTRD) {
    gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTrainPerformanceTRD.C");
    if(!AddTrainPerformanceTRD(bUseMCInfo,bUseESDfriend)) { 
      Error("RunPerformanceTrain","TrainPerformanceTRD not created!");
      return;
    }
  } else {
    Printf("RunPerformanceTrain: TRD TrainPerformanceTRD - EXCLUDED!");
  }
  //
  // ITS performance
  //
  if(iPWGPPperfITS) {
    gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskPerformanceITS.C");
    AliAnalysisTaskITSTrackingCheck *itsQA = AddTaskPerformanceITS(bUseMCInfo);
    if(!itsQA) { 
      Error("RunPerformanceTrain","AliAnalysisTaskITSTrackingCheck not created!");
      return;
    }
  } 
  else {
    Printf("RunPerformanceTrain: AliAnalysisTaskITSTrackingCheck - EXCLUDED!");
  }
  //
  // Calorimeter Performance
  //
  if(iPWGPPperfCalo) {
    gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/AddTaskCalorimeterQA.C");
    AliAnalysisTaskParticleCorrelation *taskCaloQA = AddTaskCalorimeterQA("ESD",bUseMCInfo,kFALSE);
    if(!taskCaloQA) { 
      Error("RunPerformanceTrain","AliAnalysisTaskParticleCorrelation not created!");
      return;
    }
    mgr->AddTask(taskCaloQA);
  } 
  else {
    Printf("RunPerformanceTrain: AliAnalysisTaskParticleCorrelation - EXCLUDED!");
  }
  //
  // Muon Trigger
  //
  if(iPWGPPperfMuonTrig) {
    gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskMTRchamberEfficiency.C");
    AliAnalysisTaskTrigChEff *taskMuonTrig = AddTaskMTRchamberEfficiency();
    if(!taskMuonTrig) { 
      Error("RunPerformanceTrain","AliAnalysisTaskTrigChEff not created!");
      return;
    }
    mgr->AddTask(taskMuonTrig);
  } 
  else {
    Printf("RunPerformanceTrain: AliAnalysisTaskTrigChEff - EXCLUDED!");
  }
  //
  // Muon Efficiency
  //
  if(iPWGPPperfMuonEff) {
  gROOT->LoadMacro("$ALICE_ROOT/PWG3/muondep/AddTaskMUONTrackingEfficiency.C");
  AliAnalysisTaskMuonTrackingEff *taskMuonTrackEff = AliAnalysisTaskMuonTrackingEff();
  if(!taskMuonTrackEff) { 
     Error("RunPerformanceTrain","AliAnalysisTaskMuonTrackingEff not created!");
     return;
  }
  mgr->AddTask(taskMuonTrackEff);
  } 
  else {
    Printf("RunPerformanceTrain: Muon Efficiency - EXCLUDED!");
  }
  //
  // TOF performance
  //
  if(iPWGPPperfTOF) {
  //
  } 
  else {
    Printf("RunPerformanceTrain: TOF - EXCLUDED!");
  }
  //
  // PWGPP Primary Vertex
  //
  if(iPWGPPperfPrimVertex) {
    gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskVertexESD.C");
    AliAnalysisTaskVertexESD *taskPrimVertex = AddTaskVertexESD();
    if(!taskPrimVertex) { 
      Error("RunPerformanceTrain","AliAnalysisTaskVertexESD not created!");
      return;
    }
  } 
  else {
    Printf("RunPerformanceTrain: AliAnalysisTaskVertexESD - EXCLUDED!");
  }
  //
  // PWGPP V0 QA
  //
  if (iPWGPPv0QA) {
    gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskV0QA.C");
    AliAnalysisTaskV0QA *taskv0QA = AddTaskV0QA(bUseMCInfo);
    if(!taskv0QA) {
      Error("RunPerformanceTrain","AliAnalysisTaskV0QA not created!");
      return;
    }    
  }
  else {
    Printf("RunPerformanceTrain: AliAnalysisTaskV0QA - EXCLUDED!");
  }

  //
  // Disable debug printouts
  //
  mgr->SetDebugLevel(0);

  if (!mgr->InitAnalysis())
    return;

  mgr->PrintStatus();
  //mgr->StartAnalysis("local",chain, nEvents, firstEvent);
  mgr->StartAnalysis("local",chain);
}

 RunPerformanceTrain.C:1
 RunPerformanceTrain.C:2
 RunPerformanceTrain.C:3
 RunPerformanceTrain.C:4
 RunPerformanceTrain.C:5
 RunPerformanceTrain.C:6
 RunPerformanceTrain.C:7
 RunPerformanceTrain.C:8
 RunPerformanceTrain.C:9
 RunPerformanceTrain.C:10
 RunPerformanceTrain.C:11
 RunPerformanceTrain.C:12
 RunPerformanceTrain.C:13
 RunPerformanceTrain.C:14
 RunPerformanceTrain.C:15
 RunPerformanceTrain.C:16
 RunPerformanceTrain.C:17
 RunPerformanceTrain.C:18
 RunPerformanceTrain.C:19
 RunPerformanceTrain.C:20
 RunPerformanceTrain.C:21
 RunPerformanceTrain.C:22
 RunPerformanceTrain.C:23
 RunPerformanceTrain.C:24
 RunPerformanceTrain.C:25
 RunPerformanceTrain.C:26
 RunPerformanceTrain.C:27
 RunPerformanceTrain.C:28
 RunPerformanceTrain.C:29
 RunPerformanceTrain.C:30
 RunPerformanceTrain.C:31
 RunPerformanceTrain.C:32
 RunPerformanceTrain.C:33
 RunPerformanceTrain.C:34
 RunPerformanceTrain.C:35
 RunPerformanceTrain.C:36
 RunPerformanceTrain.C:37
 RunPerformanceTrain.C:38
 RunPerformanceTrain.C:39
 RunPerformanceTrain.C:40
 RunPerformanceTrain.C:41
 RunPerformanceTrain.C:42
 RunPerformanceTrain.C:43
 RunPerformanceTrain.C:44
 RunPerformanceTrain.C:45
 RunPerformanceTrain.C:46
 RunPerformanceTrain.C:47
 RunPerformanceTrain.C:48
 RunPerformanceTrain.C:49
 RunPerformanceTrain.C:50
 RunPerformanceTrain.C:51
 RunPerformanceTrain.C:52
 RunPerformanceTrain.C:53
 RunPerformanceTrain.C:54
 RunPerformanceTrain.C:55
 RunPerformanceTrain.C:56
 RunPerformanceTrain.C:57
 RunPerformanceTrain.C:58
 RunPerformanceTrain.C:59
 RunPerformanceTrain.C:60
 RunPerformanceTrain.C:61
 RunPerformanceTrain.C:62
 RunPerformanceTrain.C:63
 RunPerformanceTrain.C:64
 RunPerformanceTrain.C:65
 RunPerformanceTrain.C:66
 RunPerformanceTrain.C:67
 RunPerformanceTrain.C:68
 RunPerformanceTrain.C:69
 RunPerformanceTrain.C:70
 RunPerformanceTrain.C:71
 RunPerformanceTrain.C:72
 RunPerformanceTrain.C:73
 RunPerformanceTrain.C:74
 RunPerformanceTrain.C:75
 RunPerformanceTrain.C:76
 RunPerformanceTrain.C:77
 RunPerformanceTrain.C:78
 RunPerformanceTrain.C:79
 RunPerformanceTrain.C:80
 RunPerformanceTrain.C:81
 RunPerformanceTrain.C:82
 RunPerformanceTrain.C:83
 RunPerformanceTrain.C:84
 RunPerformanceTrain.C:85
 RunPerformanceTrain.C:86
 RunPerformanceTrain.C:87
 RunPerformanceTrain.C:88
 RunPerformanceTrain.C:89
 RunPerformanceTrain.C:90
 RunPerformanceTrain.C:91
 RunPerformanceTrain.C:92
 RunPerformanceTrain.C:93
 RunPerformanceTrain.C:94
 RunPerformanceTrain.C:95
 RunPerformanceTrain.C:96
 RunPerformanceTrain.C:97
 RunPerformanceTrain.C:98
 RunPerformanceTrain.C:99
 RunPerformanceTrain.C:100
 RunPerformanceTrain.C:101
 RunPerformanceTrain.C:102
 RunPerformanceTrain.C:103
 RunPerformanceTrain.C:104
 RunPerformanceTrain.C:105
 RunPerformanceTrain.C:106
 RunPerformanceTrain.C:107
 RunPerformanceTrain.C:108
 RunPerformanceTrain.C:109
 RunPerformanceTrain.C:110
 RunPerformanceTrain.C:111
 RunPerformanceTrain.C:112
 RunPerformanceTrain.C:113
 RunPerformanceTrain.C:114
 RunPerformanceTrain.C:115
 RunPerformanceTrain.C:116
 RunPerformanceTrain.C:117
 RunPerformanceTrain.C:118
 RunPerformanceTrain.C:119
 RunPerformanceTrain.C:120
 RunPerformanceTrain.C:121
 RunPerformanceTrain.C:122
 RunPerformanceTrain.C:123
 RunPerformanceTrain.C:124
 RunPerformanceTrain.C:125
 RunPerformanceTrain.C:126
 RunPerformanceTrain.C:127
 RunPerformanceTrain.C:128
 RunPerformanceTrain.C:129
 RunPerformanceTrain.C:130
 RunPerformanceTrain.C:131
 RunPerformanceTrain.C:132
 RunPerformanceTrain.C:133
 RunPerformanceTrain.C:134
 RunPerformanceTrain.C:135
 RunPerformanceTrain.C:136
 RunPerformanceTrain.C:137
 RunPerformanceTrain.C:138
 RunPerformanceTrain.C:139
 RunPerformanceTrain.C:140
 RunPerformanceTrain.C:141
 RunPerformanceTrain.C:142
 RunPerformanceTrain.C:143
 RunPerformanceTrain.C:144
 RunPerformanceTrain.C:145
 RunPerformanceTrain.C:146
 RunPerformanceTrain.C:147
 RunPerformanceTrain.C:148
 RunPerformanceTrain.C:149
 RunPerformanceTrain.C:150
 RunPerformanceTrain.C:151
 RunPerformanceTrain.C:152
 RunPerformanceTrain.C:153
 RunPerformanceTrain.C:154
 RunPerformanceTrain.C:155
 RunPerformanceTrain.C:156
 RunPerformanceTrain.C:157
 RunPerformanceTrain.C:158
 RunPerformanceTrain.C:159
 RunPerformanceTrain.C:160
 RunPerformanceTrain.C:161
 RunPerformanceTrain.C:162
 RunPerformanceTrain.C:163
 RunPerformanceTrain.C:164
 RunPerformanceTrain.C:165
 RunPerformanceTrain.C:166
 RunPerformanceTrain.C:167
 RunPerformanceTrain.C:168
 RunPerformanceTrain.C:169
 RunPerformanceTrain.C:170
 RunPerformanceTrain.C:171
 RunPerformanceTrain.C:172
 RunPerformanceTrain.C:173
 RunPerformanceTrain.C:174
 RunPerformanceTrain.C:175
 RunPerformanceTrain.C:176
 RunPerformanceTrain.C:177
 RunPerformanceTrain.C:178
 RunPerformanceTrain.C:179
 RunPerformanceTrain.C:180
 RunPerformanceTrain.C:181
 RunPerformanceTrain.C:182
 RunPerformanceTrain.C:183
 RunPerformanceTrain.C:184
 RunPerformanceTrain.C:185
 RunPerformanceTrain.C:186
 RunPerformanceTrain.C:187
 RunPerformanceTrain.C:188
 RunPerformanceTrain.C:189
 RunPerformanceTrain.C:190
 RunPerformanceTrain.C:191
 RunPerformanceTrain.C:192
 RunPerformanceTrain.C:193
 RunPerformanceTrain.C:194
 RunPerformanceTrain.C:195
 RunPerformanceTrain.C:196
 RunPerformanceTrain.C:197
 RunPerformanceTrain.C:198
 RunPerformanceTrain.C:199
 RunPerformanceTrain.C:200
 RunPerformanceTrain.C:201
 RunPerformanceTrain.C:202
 RunPerformanceTrain.C:203
 RunPerformanceTrain.C:204
 RunPerformanceTrain.C:205
 RunPerformanceTrain.C:206
 RunPerformanceTrain.C:207
 RunPerformanceTrain.C:208
 RunPerformanceTrain.C:209
 RunPerformanceTrain.C:210
 RunPerformanceTrain.C:211
 RunPerformanceTrain.C:212
 RunPerformanceTrain.C:213
 RunPerformanceTrain.C:214
 RunPerformanceTrain.C:215
 RunPerformanceTrain.C:216
 RunPerformanceTrain.C:217
 RunPerformanceTrain.C:218
 RunPerformanceTrain.C:219
 RunPerformanceTrain.C:220
 RunPerformanceTrain.C:221
 RunPerformanceTrain.C:222
 RunPerformanceTrain.C:223
 RunPerformanceTrain.C:224
 RunPerformanceTrain.C:225
 RunPerformanceTrain.C:226
 RunPerformanceTrain.C:227
 RunPerformanceTrain.C:228
 RunPerformanceTrain.C:229
 RunPerformanceTrain.C:230
 RunPerformanceTrain.C:231
 RunPerformanceTrain.C:232
 RunPerformanceTrain.C:233
 RunPerformanceTrain.C:234
 RunPerformanceTrain.C:235
 RunPerformanceTrain.C:236
 RunPerformanceTrain.C:237
 RunPerformanceTrain.C:238
 RunPerformanceTrain.C:239
 RunPerformanceTrain.C:240
 RunPerformanceTrain.C:241
 RunPerformanceTrain.C:242
 RunPerformanceTrain.C:243
 RunPerformanceTrain.C:244
 RunPerformanceTrain.C:245
 RunPerformanceTrain.C:246
 RunPerformanceTrain.C:247
 RunPerformanceTrain.C:248
 RunPerformanceTrain.C:249
 RunPerformanceTrain.C:250
 RunPerformanceTrain.C:251
 RunPerformanceTrain.C:252
 RunPerformanceTrain.C:253
 RunPerformanceTrain.C:254
 RunPerformanceTrain.C:255
 RunPerformanceTrain.C:256
 RunPerformanceTrain.C:257
 RunPerformanceTrain.C:258
 RunPerformanceTrain.C:259
 RunPerformanceTrain.C:260
 RunPerformanceTrain.C:261
 RunPerformanceTrain.C:262
 RunPerformanceTrain.C:263
 RunPerformanceTrain.C:264
 RunPerformanceTrain.C:265
 RunPerformanceTrain.C:266
 RunPerformanceTrain.C:267
 RunPerformanceTrain.C:268
 RunPerformanceTrain.C:269
 RunPerformanceTrain.C:270
 RunPerformanceTrain.C:271
 RunPerformanceTrain.C:272
 RunPerformanceTrain.C:273
 RunPerformanceTrain.C:274
 RunPerformanceTrain.C:275
 RunPerformanceTrain.C:276
 RunPerformanceTrain.C:277
 RunPerformanceTrain.C:278
 RunPerformanceTrain.C:279
 RunPerformanceTrain.C:280
 RunPerformanceTrain.C:281
 RunPerformanceTrain.C:282
 RunPerformanceTrain.C:283
 RunPerformanceTrain.C:284
 RunPerformanceTrain.C:285
 RunPerformanceTrain.C:286
 RunPerformanceTrain.C:287
 RunPerformanceTrain.C:288
 RunPerformanceTrain.C:289
 RunPerformanceTrain.C:290
 RunPerformanceTrain.C:291
 RunPerformanceTrain.C:292
 RunPerformanceTrain.C:293
 RunPerformanceTrain.C:294
 RunPerformanceTrain.C:295
 RunPerformanceTrain.C:296
 RunPerformanceTrain.C:297
 RunPerformanceTrain.C:298
 RunPerformanceTrain.C:299
 RunPerformanceTrain.C:300
 RunPerformanceTrain.C:301
 RunPerformanceTrain.C:302
 RunPerformanceTrain.C:303
 RunPerformanceTrain.C:304