ROOT logo
// Macro to add 1/pt correction for specific run range to OADB object
// If both runMin and runMax are negative, the object is added as default (will override old one if any)
// Contact: ruben.shahoyan@cern.ch

void AddPtInvCorr(
		  int runMin,int runMax,
		  TGraph* corrPtInvGloA,  // A side corr. for globals 
		  TGraph* corrPtInvGloC,  // C side corr. for globals
		  TGraph* corrPtInvTPCA,  // A side corr. for TPC tracks 
		  TGraph* corrPtInvTPCC,  // C side corr. for TPC tracks
		  double corrXiniGlo=-1,  // if >0, globals will be re-propagate to vtxTrc starting from this X
		  double corrXiniTPC=-1,  // if >0, TPC tracks will be re-propagate to vtxTPC starting from this X
		  const char* fileOADB = "$OADB/PWGPP/data/CorrPTInv.root",
		  const char* objName  = "CorrPTInv"
)
{
  //
  gSystem->Load("libANALYSIS.so");
  gSystem->Load("libANALYSISalice.so");
  gSystem->Load("libTENDER.so");
  gSystem->Load("libOADB.so");
  //
  //
  TString fileName = fileOADB;
  if (fileName.BeginsWith("$OADB")) fileName.ReplaceAll("$OADB",Form("%s/",AliAnalysisManager::GetOADBPath()));
  gSystem->ExpandPathName(fileName);
  //
  Bool_t isDefault = kFALSE;
  if (runMin<0 && runMax<0) {
    printf("Run ranges is negative, will add as default object\n");
    isDefault = kTRUE;
  }
  AliOADBTrackFix* corObj = new AliOADBTrackFix(isDefault ? "default" : Form("corrPTInv_%d_%d",runMin,runMax));
  corObj->SetPtInvCorr(AliOADBTrackFix::kCorModeGlob,0,corrPtInvGloA);
  corObj->SetPtInvCorr(AliOADBTrackFix::kCorModeGlob,1,corrPtInvGloC);
  corObj->SetXIniPtInvCorr(AliOADBTrackFix::kCorModeGlob, corrXiniGlo);
  //
  corObj->SetPtInvCorr(AliOADBTrackFix::kCorModeTPCInner,0,corrPtInvTPCA);
  corObj->SetPtInvCorr(AliOADBTrackFix::kCorModeTPCInner,1,corrPtInvTPCC);
  corObj->SetXIniPtInvCorr(AliOADBTrackFix::kCorModeTPCInner, corrXiniTPC);
  //
  AliOADBContainer *oadbCont = new AliOADBContainer(objName);
  //
  if (oadbCont->InitFromFile(fileName.Data(),objName)) {
    printf("New object will be created\n");
    oadbCont->SetNameTitle(objName, "object for 1/pt correction");
  }
  if (isDefault) {
    oadbCont->CleanDefaultList();
    oadbCont->AddDefaultObject(corObj);
  }
  else oadbCont->AppendObject(corObj, runMin,runMax);
  //
  oadbCont->WriteToFile(fileName.Data());
  //
}
 AddPtInvCorr.C:1
 AddPtInvCorr.C:2
 AddPtInvCorr.C:3
 AddPtInvCorr.C:4
 AddPtInvCorr.C:5
 AddPtInvCorr.C:6
 AddPtInvCorr.C:7
 AddPtInvCorr.C:8
 AddPtInvCorr.C:9
 AddPtInvCorr.C:10
 AddPtInvCorr.C:11
 AddPtInvCorr.C:12
 AddPtInvCorr.C:13
 AddPtInvCorr.C:14
 AddPtInvCorr.C:15
 AddPtInvCorr.C:16
 AddPtInvCorr.C:17
 AddPtInvCorr.C:18
 AddPtInvCorr.C:19
 AddPtInvCorr.C:20
 AddPtInvCorr.C:21
 AddPtInvCorr.C:22
 AddPtInvCorr.C:23
 AddPtInvCorr.C:24
 AddPtInvCorr.C:25
 AddPtInvCorr.C:26
 AddPtInvCorr.C:27
 AddPtInvCorr.C:28
 AddPtInvCorr.C:29
 AddPtInvCorr.C:30
 AddPtInvCorr.C:31
 AddPtInvCorr.C:32
 AddPtInvCorr.C:33
 AddPtInvCorr.C:34
 AddPtInvCorr.C:35
 AddPtInvCorr.C:36
 AddPtInvCorr.C:37
 AddPtInvCorr.C:38
 AddPtInvCorr.C:39
 AddPtInvCorr.C:40
 AddPtInvCorr.C:41
 AddPtInvCorr.C:42
 AddPtInvCorr.C:43
 AddPtInvCorr.C:44
 AddPtInvCorr.C:45
 AddPtInvCorr.C:46
 AddPtInvCorr.C:47
 AddPtInvCorr.C:48
 AddPtInvCorr.C:49
 AddPtInvCorr.C:50
 AddPtInvCorr.C:51
 AddPtInvCorr.C:52
 AddPtInvCorr.C:53
 AddPtInvCorr.C:54
 AddPtInvCorr.C:55
 AddPtInvCorr.C:56
 AddPtInvCorr.C:57