ROOT logo
/*

  Sequence hot to se the PWGPP analysis tasks:
  

  //1. Load libraries if needed:
  //
  gSystem->Load("/usr/local/grid/XRootd/GSI/lib/libXrdClient.so");  
  gSystem->Load("libANALYSIS.so");
  gSystem->Load("libANALYSISalice.so");
  gSystem->Load("libPWG0base.so");
  gSystem->Load("libPWG0dep.so");
  gSystem->Load("libPWGPP.so");

  AliLog::SetGlobalLogLevel(AliLog::kError);

  //2. Make a chain e.g.:
  //
  gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
  gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+");
  AliXRDPROOFtoolkit tool; 
  TChain * chainEsd = tool.MakeChain("esd.txt","esdTree",0,5);
  chainEsd->Lookup();
  //

 
  //3. Make a analysis manager with attached task:
  .L $ALICE_ROOT/PWGPP/macros/taskComp.C
  Init();
  AliAnalysisManager *mgr = MakeManager();
  
  //4. Process task localy
  //
  mgr->SetNSysInfo(100);
  mgr->SetDebugLevel(1);
  mgr->StartAnalysis("local",chainEsd);

  //
  //4. Process task on proof
  //
  TProof::Open("");
  .L /u/miranov/macros/ProofEnableAliRoot.C
  ProofEnableAliRoot("/usr/local/grid/AliRoot/HEAD0108");
  gProof->Exec("gSystem->Load(\"libANALYSIS.so\")",kTRUE);
  gProof->Exec("gSystem->Load(\"libAOD.so\")",kTRUE);
  gProof->Exec("gSystem->Load(\"libANALYSISalice.so\")",kTRUE);
  gProof->Exec("gSystem->Load(\"libPWG0base.so\")",kTRUE);
  gProof->Exec("gSystem->Load(\"libPWG0dep.so\")",kTRUE);
  gProof->Exec("gSystem->Load(\"libPWGPP.so\")",kTRUE);
  
  TString path=gSystem->pwd();
  TString execCDB="gROOT->Macro(\"";
  execCDB+=path+"/ConfigOCDB.C\"\)";
  gProof->Exec(execCDB->Data(),kFALSE);

  mgr->StartAnalysis("proof",chainEsd);
  //5. Get debug stream - if speciefied  
  TFile f("mcTaskDebug.root");
  TTree *treeCMP = (TTree*)f.Get("RC");

  //6. Read the analysis object
  TFile f("Output.root");
  TObjArray * array = (TObjArray*)f.Get("AliComparisonRes");
  AliComparisonRes * compObj = (AliComparisonRes*)array->FindObject("AliComparisonRes");
  //
  //7. Get debug streamer on PROOF
  gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
  gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+")
  AliXRDPROOFtoolkit tool; 
  TChain * chainTr = tool.MakeChain("cmp.txt","RC",0,1000000);
  chainTr->Lookup();
  chainTr->SetProof(kTRUE);
  TChain * chainTPC = tool.MakeChain("tpc.txt","Crefit",0,50);
  chainTPC->Lookup();
  chainTr->SetProof(kTRUE);

  TChain * chainTracking = tool.MakeChain("mctracking.txt","MCupdate",0,50);
  chainTracking->Lookup();
  chainTracking->SetProof(kTRUE);



  TFile f("mcTaskDebug.root");
  TTree *treeCMP = (TTree*)f.Get("RC");

*/



void AddComparison( AliGenInfoTask * task);

void Init(){
  //
  // Init mag field and the geo manager
  // 
  TGeoManager::Import("/u/miranov/proof/geometry.root");
  AliGeomManager::LoadGeometry("/u/miranov/proof/geometry.root");
  
  TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 1., 1., AliMagF::k5kG));


}

AliAnalysisManager *  MakeManager(){
  //
  //
  //
  AliAnalysisManager *mgr = new AliAnalysisManager("AnalysisComponentManager");
  mgr->SetDebugLevel(1);  
  cout << "Creating ESD event handler" << endl; 
  AliESDInputHandler* esdH = new AliESDInputHandler();
  // set the ESDfriend branch active (my modification of AliESDInputHandler)
  esdH->SetActiveBranches("ESDfriend");
  mgr->SetInputEventHandler(esdH); 
  
  AliMCEventHandler* mcHandler = new AliMCEventHandler();
  mgr->SetMCtruthEventHandler(mcHandler);
  //


  AliGenInfoTask *genTask = new AliGenInfoTask("genTask");
  genTask->SetStreamLevel(10);
  genTask->SetDebugLevel(10); 
  genTask->SetDebugOuputhPath(Form("%s/",gSystem->pwd()));

 //  //AddComparison(genTask);
//   mgr->AddTask(genTask);
//   //
//   //
//   AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
//   mgr->ConnectInput(genTask,0,cinput1);
//   //
//   AliAnalysisDataContainer *coutput1
//     =mgr->CreateContainer("AliComparisonRes",TObjArray::Class(),
// 			   AliAnalysisManager::kOutputContainer,
//  			  "Output.root");
//   mgr->ConnectOutput(genTask,0,coutput1);

  

  //
  // TPC PID task
  //
  AliTPCtaskPID *pidTask = new AliTPCtaskPID("pidTask");
  mgr->AddTask(pidTask);
  AliAnalysisDataContainer *cinput2 = mgr->GetCommonInputContainer();
  mgr->ConnectInput(pidTask,0,cinput2);
  //
  AliAnalysisDataContainer *coutput2
    =mgr->CreateContainer("tpcTaskPID", TObjArray::Class(),
			  AliAnalysisManager::kOutputContainer,
			  "OutputPID.root");
  mgr->ConnectOutput(pidTask,0,coutput2);

  //
  // TPC QA task
  //
  AliTPCtaskQA *qaTask = new AliTPCtaskQA("qaTask");
  mgr->AddTask(qaTask);
  AliAnalysisDataContainer *cinput3 = mgr->GetCommonInputContainer();
  mgr->ConnectInput(qaTask,0,cinput3);
  //
  AliAnalysisDataContainer *coutput3
    =mgr->CreateContainer("tpcTaskQA", TObjArray::Class(),
			  AliAnalysisManager::kOutputContainer,
			  "OutputQA.root");
  mgr->ConnectOutput(qaTask,0,coutput3);
  //
  //
  //
  AliMCTrackingTestTask *mcTracking = new  AliMCTrackingTestTask("mcTracking");
  mcTracking->SetStreamLevel(10);
  mcTracking->SetDebugLevel(10);
  mgr->AddTask(mcTracking);
  mcTracking->SetDebugOuputhPath(gSystem->pwd());
  AliAnalysisDataContainer *cinput4 = mgr->GetCommonInputContainer();
  mgr->ConnectInput(mcTracking,0,cinput4);
  //
  AliAnalysisDataContainer *coutput4
    =mgr->CreateContainer("mcTask", TObjArray::Class(),
			  AliAnalysisManager::kOutputContainer,
			  "OutputMC.root");
  mgr->ConnectOutput(mcTracking,0,coutput4);



  //
  if (!mgr->InitAnalysis()) return 0;
  return mgr;
}

void AddComparison( AliGenInfoTask * task){
  
  // Create ESD track reconstruction cuts
  AliRecInfoCuts *pRecInfoCuts = new AliRecInfoCuts(); 
  if(pRecInfoCuts) {
    pRecInfoCuts->SetPtRange(0.15,200.0);
    pRecInfoCuts->SetMaxAbsTanTheta(1.0);
    pRecInfoCuts->SetMinNClustersTPC(10);
    pRecInfoCuts->SetMinNClustersITS(2);
    pRecInfoCuts->SetMinTPCsignalN(50);

	pRecInfoCuts->SetHistogramsOn(kFALSE); 
  } else {
    AliDebug(AliLog::kError, "ERROR: Cannot create AliRecInfoCuts object");
  }

  // Create MC track reconstruction cuts
  AliMCInfoCuts  *pMCInfoCuts = new AliMCInfoCuts();
  if(pMCInfoCuts) {
    pMCInfoCuts->SetMinRowsWithDigits(50);
    pMCInfoCuts->SetMaxR(0.001);  
    pMCInfoCuts->SetMaxVz(0.001); 
    pMCInfoCuts->SetRangeTPCSignal(0.5,1.4); 
  } else {
    AliDebug(AliLog::kError, "ERROR: Cannot AliMCInfoCuts object");
  }

  //
  // Create comparison objects and set cuts 
  //

  // Resolution
  AliComparisonRes *pCompRes = new AliComparisonRes("AliComparisonRes","AliComparisonRes"); 
  if(!pCompRes) {
    AliDebug(AliLog::kError, "ERROR: Cannot create AliComparisonRes object");
  }
  pCompRes->SetAliRecInfoCuts(pRecInfoCuts);
  pCompRes->SetAliMCInfoCuts(pMCInfoCuts);

  // Efficiency
  AliComparisonEff *pCompEff =  new AliComparisonEff("AliComparisonEff","AliComparisonEff");
  if(!pCompEff) {
    AliDebug(AliLog::kError, "ERROR: Cannot create AliComparisonEff object");
  }
  pCompEff->SetAliRecInfoCuts(pRecInfoCuts);
  pCompEff->SetAliMCInfoCuts(pMCInfoCuts);

  // dE/dx
  AliComparisonDEdx *pCompDEdx = new AliComparisonDEdx("AliComparisonDEdx","AliComparisonDEdx");
  if(!pCompDEdx) {
    AliDebug(AliLog::kError, "ERROR: Cannot create AliComparisonDEdx object");
  }
  pCompDEdx->SetAliRecInfoCuts(pRecInfoCuts);
  pCompDEdx->SetAliMCInfoCuts(pMCInfoCuts);
  pCompDEdx->SetMCPtMin(0.5);
  pCompDEdx->SetMCAbsTanThetaMax(0.5);
  pCompDEdx->SetMCPdgCode(pMCInfoCuts->GetPiP()); // only pi+ particles

  // DCA
  AliComparisonDCA *pCompDCA = new AliComparisonDCA("AliComparisonDCA","AliComparisonDCA");
  if(!pCompDCA) {
    AliDebug(AliLog::kError, "ERROR: Cannot create AliComparisonDCA object");
  }
  pCompDCA->SetAliRecInfoCuts(pRecInfoCuts);
  pCompDCA->SetAliMCInfoCuts(pMCInfoCuts);
  //
  //
  //
  task->AddComparisonObject( pCompRes );
  task->AddComparisonObject( pCompEff );
  task->AddComparisonObject( pCompDEdx );
  task->AddComparisonObject( pCompDCA );  
}



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