ROOT logo
/*
  Example usage:

  0. Load neccessary libraries
  
  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libTPCcalib");
  gSystem->Load("libXrdClient.so");
  gSystem->Load("libNetx.so");
  TGrid::Connect("alien://",0,0,"t");
  gSystem->Load("$ROOTSYS/lib/libXrdClient.so");
  //
  // 1. Make list of the files 
  //
  .L $ALICE_ROOT/TPC/macros/testTPC/AlienToolkit.cxx+
  gSystem->Load("libXrdClient.so");
  gSystem->Load("libNetx.so");
  AlienToolkit toolkit;
  char *path = "/alice/cern.ch/user/a/amatyja/alice/data/"
  toolkit.MakeCollection(path,"32129*Krypton.root");
  toolkit.MakeCollection(path,"32231*Krypton.root");
  toolkit.MakeCollection(path,"32284*Krypton.root");
  toolkit.PrintPFN(); > list.txt

  //
  // 2. Initialization of proof
  // 
  TProofMgr * proofmgr = TProof::Mgr("lxgrid5.gsi.de");
  TProof * proof = proofmgr->CreateSession();
  proof->SetParameter("PROOF_MaxSlavesPerNode", (Long_t)1000);
  .L /u/miranov/macros/ProofEnableAliRoot.C
  ProofEnableAliRoot("/usr/local/grid/AliRoot/HEAD0108");
  gProof->Exec("gSystem->Load(\"libANALYSIS.so\")",kTRUE);
  gProof->Exec("gSystem->Load(\"libSTAT.so\")",kTRUE);
  gProof->Exec("gSystem->Load(\"libTPCcalib.so\")",kTRUE);
  gProof->Exec(".x $ALICE_ROOT/TPC/macros/ConfigOCDB.C");

  //
  // 3 Run analysis on PROOF
  //
  //
  // Create chain of input files
  //
  gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
  gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+");
  .L $ALICE_ROOT/TPC/macros/RunAliTPCCalibKrTask.C
  RunAliTPCCalibKrTask(kTRUE);
  
  
  //
  // Check the cuts for clusters
  //
  AliXRDPROOFtoolkit tool; 
  TChain * chain = tool.MakeChain("list.txt","Kr",0,1000);
  chain->Lookup();
  chain->SetProof(kTRUE);

  TCut cutR0("cutR0","fADCcluster/fSize<200");        // adjust it according v seetings - 
  TCut cutR1("cutR1","fADCcluster/fSize>7");          // cosmic tracks and noise removal
  TCut cutR2("cutR2","fMax.fAdc/fADCcluster<0.4");    // digital noise removal
  TCut cutR3("cutR3","fMax.fAdc/fADCcluster>0.01");   // noise removal
  TCut cutR4("cutR4","fMax.fTime>200");   // noise removal
  TCut cutR5("cutR5","fMax.fTime<600");   // noise removal
  TCut cutS1("cutS1","fSize<200");    // adjust it according v seetings - cosmic tracks
  TCut cutAll = cutR0+cutR1+cutR2+cutR3+cutR4+cutR5+cutS1;




  //..
  //
  //

  //Example usage 
  TFile f("KrHisto.root");
  AliTPCCalibKr *kr = f.Get("AliTPCCalibKr");
  
  kr->ProjectHisto(kr->GetHistoKr(71),"aaa",30,36,30,40)->Draw()
  //
  //
  //
  MakeTree();
  //default cuts
  TCut cutKr("cutKr","entries.fElements<5000&&fitNormChi2.fElements<3&&fitNormChi2.fElements>0.2&&abs(fitRMS.fElements/fitMean.fElements-0.06)<0.025");

TObjArray * array = AliTPCCalibViewerGUI::ShowGUI("kryptonTree.root");
AliTPCCalibViewerGUI * viewer = (AliTPCCalibViewerGUI*)array->At(0);
TTree * tree = viewer->GetViewer()->GetTree();

tree->SetAlias("cutAll","abs(fitNormChi2.fElements-2.)<1.8&&entries.fElements/entries_Median.fElements<4&&entries.fElements/entries_Median.fElements>0.4&&fitRMS.fElements/fitMean.fElements<0.09&&fitRMS.fElements/fitMean.fElements>0.02")

*/

TChain * chain = 0;

void RunAliTPCCalibKrTask(Bool_t bProof = kFALSE)
{
  //
  AliXRDPROOFtoolkit tool;  
  chain = tool.MakeChain("list.txt","Kr","",20000,0);
  chain->Lookup();
  chain->SetBranchStatus("Cl.fCluster",kFALSE);  
  
  //
  // Create the analysis manager
  //
  AliAnalysisManager *mgr = new AliAnalysisManager("testAnalysis");

  // Calibration component 
  AliTPCCalibKr *calibObj = new AliTPCCalibKr;
  //calibObj->SetASide(kFALSE);

  // Add task 
  AliTPCCalibKrTask *task = new AliTPCCalibKrTask;
  task->SetInputChain(chain);
  task->SetTPCCalibKr(calibObj);
  mgr->AddTask(task); 

  // Attach input
  cInput  = mgr->CreateContainer("cInput", TChain::Class(), AliAnalysisManager::kInputContainer);
  mgr->ConnectInput(task, 0, cInput);

  // Attach output
  cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer,"outHistFile.root");
  mgr->ConnectOutput(task, 0, cOutput);
  //
  cOutput->SetSpecialOutput(kTRUE);
  cOutput->SetFileName("CalibObjectFile.root");
  //
  // Run analysis
  if (!mgr->InitAnalysis()) return;
  mgr->PrintStatus();
  mgr->SetDebugLevel(1);
  
  if(bProof) {
    mgr->StartAnalysis("proof", chain);
  }
  else mgr->StartAnalysis("local", chain);
}



void MakeTree(){

  TFile fpad("calibKr.root");
  AliTPCPreprocessorOnline * preprocesor = new AliTPCPreprocessorOnline;  
  preprocesor->AddComponent(spectrMean->Clone());
  preprocesor->AddComponent(spectrRMS->Clone());
  preprocesor->AddComponent(fitMean->Clone());
  preprocesor->AddComponent(fitRMS->Clone());
  preprocesor->AddComponent(fitNormChi2->Clone());
  preprocesor->AddComponent(entries->Clone());
  preprocesor->DumpToFile("kryptonTree.root");
  
}
 RunAliTPCCalibKrTask.C:1
 RunAliTPCCalibKrTask.C:2
 RunAliTPCCalibKrTask.C:3
 RunAliTPCCalibKrTask.C:4
 RunAliTPCCalibKrTask.C:5
 RunAliTPCCalibKrTask.C:6
 RunAliTPCCalibKrTask.C:7
 RunAliTPCCalibKrTask.C:8
 RunAliTPCCalibKrTask.C:9
 RunAliTPCCalibKrTask.C:10
 RunAliTPCCalibKrTask.C:11
 RunAliTPCCalibKrTask.C:12
 RunAliTPCCalibKrTask.C:13
 RunAliTPCCalibKrTask.C:14
 RunAliTPCCalibKrTask.C:15
 RunAliTPCCalibKrTask.C:16
 RunAliTPCCalibKrTask.C:17
 RunAliTPCCalibKrTask.C:18
 RunAliTPCCalibKrTask.C:19
 RunAliTPCCalibKrTask.C:20
 RunAliTPCCalibKrTask.C:21
 RunAliTPCCalibKrTask.C:22
 RunAliTPCCalibKrTask.C:23
 RunAliTPCCalibKrTask.C:24
 RunAliTPCCalibKrTask.C:25
 RunAliTPCCalibKrTask.C:26
 RunAliTPCCalibKrTask.C:27
 RunAliTPCCalibKrTask.C:28
 RunAliTPCCalibKrTask.C:29
 RunAliTPCCalibKrTask.C:30
 RunAliTPCCalibKrTask.C:31
 RunAliTPCCalibKrTask.C:32
 RunAliTPCCalibKrTask.C:33
 RunAliTPCCalibKrTask.C:34
 RunAliTPCCalibKrTask.C:35
 RunAliTPCCalibKrTask.C:36
 RunAliTPCCalibKrTask.C:37
 RunAliTPCCalibKrTask.C:38
 RunAliTPCCalibKrTask.C:39
 RunAliTPCCalibKrTask.C:40
 RunAliTPCCalibKrTask.C:41
 RunAliTPCCalibKrTask.C:42
 RunAliTPCCalibKrTask.C:43
 RunAliTPCCalibKrTask.C:44
 RunAliTPCCalibKrTask.C:45
 RunAliTPCCalibKrTask.C:46
 RunAliTPCCalibKrTask.C:47
 RunAliTPCCalibKrTask.C:48
 RunAliTPCCalibKrTask.C:49
 RunAliTPCCalibKrTask.C:50
 RunAliTPCCalibKrTask.C:51
 RunAliTPCCalibKrTask.C:52
 RunAliTPCCalibKrTask.C:53
 RunAliTPCCalibKrTask.C:54
 RunAliTPCCalibKrTask.C:55
 RunAliTPCCalibKrTask.C:56
 RunAliTPCCalibKrTask.C:57
 RunAliTPCCalibKrTask.C:58
 RunAliTPCCalibKrTask.C:59
 RunAliTPCCalibKrTask.C:60
 RunAliTPCCalibKrTask.C:61
 RunAliTPCCalibKrTask.C:62
 RunAliTPCCalibKrTask.C:63
 RunAliTPCCalibKrTask.C:64
 RunAliTPCCalibKrTask.C:65
 RunAliTPCCalibKrTask.C:66
 RunAliTPCCalibKrTask.C:67
 RunAliTPCCalibKrTask.C:68
 RunAliTPCCalibKrTask.C:69
 RunAliTPCCalibKrTask.C:70
 RunAliTPCCalibKrTask.C:71
 RunAliTPCCalibKrTask.C:72
 RunAliTPCCalibKrTask.C:73
 RunAliTPCCalibKrTask.C:74
 RunAliTPCCalibKrTask.C:75
 RunAliTPCCalibKrTask.C:76
 RunAliTPCCalibKrTask.C:77
 RunAliTPCCalibKrTask.C:78
 RunAliTPCCalibKrTask.C:79
 RunAliTPCCalibKrTask.C:80
 RunAliTPCCalibKrTask.C:81
 RunAliTPCCalibKrTask.C:82
 RunAliTPCCalibKrTask.C:83
 RunAliTPCCalibKrTask.C:84
 RunAliTPCCalibKrTask.C:85
 RunAliTPCCalibKrTask.C:86
 RunAliTPCCalibKrTask.C:87
 RunAliTPCCalibKrTask.C:88
 RunAliTPCCalibKrTask.C:89
 RunAliTPCCalibKrTask.C:90
 RunAliTPCCalibKrTask.C:91
 RunAliTPCCalibKrTask.C:92
 RunAliTPCCalibKrTask.C:93
 RunAliTPCCalibKrTask.C:94
 RunAliTPCCalibKrTask.C:95
 RunAliTPCCalibKrTask.C:96
 RunAliTPCCalibKrTask.C:97
 RunAliTPCCalibKrTask.C:98
 RunAliTPCCalibKrTask.C:99
 RunAliTPCCalibKrTask.C:100
 RunAliTPCCalibKrTask.C:101
 RunAliTPCCalibKrTask.C:102
 RunAliTPCCalibKrTask.C:103
 RunAliTPCCalibKrTask.C:104
 RunAliTPCCalibKrTask.C:105
 RunAliTPCCalibKrTask.C:106
 RunAliTPCCalibKrTask.C:107
 RunAliTPCCalibKrTask.C:108
 RunAliTPCCalibKrTask.C:109
 RunAliTPCCalibKrTask.C:110
 RunAliTPCCalibKrTask.C:111
 RunAliTPCCalibKrTask.C:112
 RunAliTPCCalibKrTask.C:113
 RunAliTPCCalibKrTask.C:114
 RunAliTPCCalibKrTask.C:115
 RunAliTPCCalibKrTask.C:116
 RunAliTPCCalibKrTask.C:117
 RunAliTPCCalibKrTask.C:118
 RunAliTPCCalibKrTask.C:119
 RunAliTPCCalibKrTask.C:120
 RunAliTPCCalibKrTask.C:121
 RunAliTPCCalibKrTask.C:122
 RunAliTPCCalibKrTask.C:123
 RunAliTPCCalibKrTask.C:124
 RunAliTPCCalibKrTask.C:125
 RunAliTPCCalibKrTask.C:126
 RunAliTPCCalibKrTask.C:127
 RunAliTPCCalibKrTask.C:128
 RunAliTPCCalibKrTask.C:129
 RunAliTPCCalibKrTask.C:130
 RunAliTPCCalibKrTask.C:131
 RunAliTPCCalibKrTask.C:132
 RunAliTPCCalibKrTask.C:133
 RunAliTPCCalibKrTask.C:134
 RunAliTPCCalibKrTask.C:135
 RunAliTPCCalibKrTask.C:136
 RunAliTPCCalibKrTask.C:137
 RunAliTPCCalibKrTask.C:138
 RunAliTPCCalibKrTask.C:139
 RunAliTPCCalibKrTask.C:140
 RunAliTPCCalibKrTask.C:141
 RunAliTPCCalibKrTask.C:142
 RunAliTPCCalibKrTask.C:143
 RunAliTPCCalibKrTask.C:144
 RunAliTPCCalibKrTask.C:145
 RunAliTPCCalibKrTask.C:146
 RunAliTPCCalibKrTask.C:147
 RunAliTPCCalibKrTask.C:148
 RunAliTPCCalibKrTask.C:149
 RunAliTPCCalibKrTask.C:150
 RunAliTPCCalibKrTask.C:151
 RunAliTPCCalibKrTask.C:152
 RunAliTPCCalibKrTask.C:153
 RunAliTPCCalibKrTask.C:154
 RunAliTPCCalibKrTask.C:155
 RunAliTPCCalibKrTask.C:156
 RunAliTPCCalibKrTask.C:157