ROOT logo
/*
// Pseudo code
// 1. Load Calibration from DB

   .x $ALICE_ROOT/TPC/macros/ConfigOCDB.C

//
//2.  Load Calibration components
//
.x ~/UliStyle.C
gSystem->Load("libANALYSIS");
gSystem->Load("libSTAT");
gSystem->Load("libTPCcalib");
TFile fcalib("CalibObjects.root");
TObjArray * array = (TObjArray*)fcalib.Get("TPCCalib");
AliTPCcalibTracksGain * gain = ( AliTPCcalibTracksGain *)array->FindObject("calibTracksGain");

//
//3.
// 
AliTPCClusterParam * paramCl = AliTPCcalibDB::Instance()->GetClusterParam(); 
gain->UpdateClusterParam(paramCl);

//
//4. Test - visulaize results
//
TF1 fdr("fdr","AliTPCClusterParam::SQnorm(0,0,x,0,0)",0,1);

//
//5. Update the ClusterParam in your OCDB
//
//
Int_t runNumber = 0; //61725
AliCDBMetaData *metaData= new AliCDBMetaData();
metaData->SetObjectClassName("AliTPCClusterParam");
metaData->SetResponsible("Marian Ivanov");
metaData->SetBeamPeriod(1);
metaData->SetAliRootVersion("05-06-00"); //root version
metaData->SetComment("October runs calibration");
AliCDBId id1("TPC/Calib/ClusterParam", runNumber, AliCDBRunRange::Infinity());
gStorage = AliCDBManager::Instance()->GetStorage("local://$ALICE_ROOT/OCDB");
gStorage->Put(paramCl, id1, metaData);


//
//  6. dEdx matching - Currently only debug streamers
//  Load Proof with OCDB 
    See pseudo code TestChainCosmicdEdx
*/





void TestChainCosmicDedx(){
  //
  // pseudo cose
  //
  gSystem->Load("libANALYSIS");
  gSystem->Load("libSTAT");
  gSystem->Load("libTPCcalib");
  
  //e.g
  gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
  gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+");
  AliXRDPROOFtoolkit tool;  
  TChain * chainCosmic =  tool.MakeChain("cosmic.txt","Track0",0,1000000);
  chainCosmic->Lookup();



  TCut cutT("cutT","abs(Tr1.fP[3]+Tr0.fP[3])<0.01");  // OK
  TCut cutD("cutD","abs(Tr0.fP[0]+Tr1.fP[0])<2");     // OK
  TCut cutP1("cutP1","abs(Tr0.fP[1]-Tr1.fP[1])<3");   // OK
  TCut cutPt("cutPt","abs(Tr1.fP[4]+Tr0.fP[4])<0.1&&abs(Tr0.fP[4])+abs(Tr1.fP[4])<10");
  TCut cutN("cutN","min(Orig0.fTPCncls,Orig1.fTPCncls)>100");
  TCut cutA=cutT+cutD+cutPt+cutN+cutP1;
  
  TCut cutS("cutS","Orig0.fIp.fP[1]*Orig1.fIp.fP[1]>0");

  if (gProof) chainCosmic->SetProof(kTRUE);
  //
  //
  //
  //
   
  //
  // Q normalization - short - medium - long
  //

  TVectorD paramT(3);
  TVectorD paramM(3);
  TH1 * hisRatio =0;

  chainCosmic->Draw("Seed0.CookdEdxNorm(0.01,0.65,0,0,64,0,kFALSE)/Seed0.CookdEdxNorm(0.01,0.65,0,0,159,0,kFALSE)>>hisRatio(100,0.5,1.5)","min(Orig0.fTPCncls,Orig1.fTPCncls)>130",""); 
  hisRatio = (TH1*)gROOT->FindObject("hisRatio");
  hisRatio->Fit("gaus");
  paramT[0]=hisRatio->GetFunction("gaus")->GetParameter(1);
  //
  chainCosmic->Draw("Seed0.CookdEdxNorm(0.01,0.65,0,64,127,0,kFALSE)/Seed0.CookdEdxNorm(0.01,0.65,0,0,159,0,kFALSE)>>hisRatio(100,0.5,1.5)","min(Orig0.fTPCncls,Orig1.fTPCncls)>130",""); 
  hisRatio = (TH1*)gROOT->FindObject("hisRatio");
  hisRatio->Fit("gaus");
  paramT[1]=hisRatio->GetFunction("gaus")->GetParameter(1);
  //
  chainCosmic->Draw("Seed0.CookdEdxNorm(0.01,0.65,0,127,159,0,kFALSE)/Seed0.CookdEdxNorm(0.01,0.65,0,0,159,0,kFALSE)>>hisRatio(100,0.5,1.5)","min(Orig0.fTPCncls,Orig1.fTPCncls)>130",""); 
  hisRatio = (TH1*)gROOT->FindObject("hisRatio");
  hisRatio->Fit("gaus");
  paramT[2]=hisRatio->GetFunction("gaus")->GetParameter(1);
  //
  chainCosmic->Draw("Seed0.CookdEdxNorm(0.01,0.65,1,0,64,0,kFALSE)/Seed0.CookdEdxNorm(0.01,0.65,1,0,159,0,kFALSE)>>hisRatio(100,0.5,1.5)","min(Orig0.fTPCncls,Orig1.fTPCncls)>130",""); 
  hisRatio = (TH1*)gROOT->FindObject("hisRatio");
  hisRatio->Fit("gaus");
  paramM[0]=hisRatio->GetFunction("gaus")->GetParameter(1);
  //
  chainCosmic->Draw("Seed0.CookdEdxNorm(0.01,0.65,1,64,127,0,kFALSE)/Seed0.CookdEdxNorm(0.01,0.65,1,0,159,0,kFALSE)>>hisRatio(100,0.5,1.5)","min(Orig0.fTPCncls,Orig1.fTPCncls)>130",""); 
  hisRatio = (TH1*)gROOT->FindObject("hisRatio");
  hisRatio->Fit("gaus");
  paramM[1]=hisRatio->GetFunction("gaus")->GetParameter(1);
  //
  chainCosmic->Draw("Seed0.CookdEdxNorm(0.01,0.65,1,127,159,0,kFALSE)/Seed0.CookdEdxNorm(0.01,0.65,1,0,159,0,kFALSE)>>hisRatio(100,0.5,1.5)","min(Orig0.fTPCncls,Orig1.fTPCncls)>130",""); 
  hisRatio = (TH1*)gROOT->FindObject("hisRatio");
  hisRatio->Fit("gaus");
  paramM[2]=hisRatio->GetFunction("gaus")->GetParameter(1);
  //




		
 paramCl->fQpadTnorm=(TVectorD*)paramT->Clone();
 paramCl->fQpadMnorm=(TVectorD*)paramM->Clone();
 

 //check
 

}






 CalibClParamNew.C:1
 CalibClParamNew.C:2
 CalibClParamNew.C:3
 CalibClParamNew.C:4
 CalibClParamNew.C:5
 CalibClParamNew.C:6
 CalibClParamNew.C:7
 CalibClParamNew.C:8
 CalibClParamNew.C:9
 CalibClParamNew.C:10
 CalibClParamNew.C:11
 CalibClParamNew.C:12
 CalibClParamNew.C:13
 CalibClParamNew.C:14
 CalibClParamNew.C:15
 CalibClParamNew.C:16
 CalibClParamNew.C:17
 CalibClParamNew.C:18
 CalibClParamNew.C:19
 CalibClParamNew.C:20
 CalibClParamNew.C:21
 CalibClParamNew.C:22
 CalibClParamNew.C:23
 CalibClParamNew.C:24
 CalibClParamNew.C:25
 CalibClParamNew.C:26
 CalibClParamNew.C:27
 CalibClParamNew.C:28
 CalibClParamNew.C:29
 CalibClParamNew.C:30
 CalibClParamNew.C:31
 CalibClParamNew.C:32
 CalibClParamNew.C:33
 CalibClParamNew.C:34
 CalibClParamNew.C:35
 CalibClParamNew.C:36
 CalibClParamNew.C:37
 CalibClParamNew.C:38
 CalibClParamNew.C:39
 CalibClParamNew.C:40
 CalibClParamNew.C:41
 CalibClParamNew.C:42
 CalibClParamNew.C:43
 CalibClParamNew.C:44
 CalibClParamNew.C:45
 CalibClParamNew.C:46
 CalibClParamNew.C:47
 CalibClParamNew.C:48
 CalibClParamNew.C:49
 CalibClParamNew.C:50
 CalibClParamNew.C:51
 CalibClParamNew.C:52
 CalibClParamNew.C:53
 CalibClParamNew.C:54
 CalibClParamNew.C:55
 CalibClParamNew.C:56
 CalibClParamNew.C:57
 CalibClParamNew.C:58
 CalibClParamNew.C:59
 CalibClParamNew.C:60
 CalibClParamNew.C:61
 CalibClParamNew.C:62
 CalibClParamNew.C:63
 CalibClParamNew.C:64
 CalibClParamNew.C:65
 CalibClParamNew.C:66
 CalibClParamNew.C:67
 CalibClParamNew.C:68
 CalibClParamNew.C:69
 CalibClParamNew.C:70
 CalibClParamNew.C:71
 CalibClParamNew.C:72
 CalibClParamNew.C:73
 CalibClParamNew.C:74
 CalibClParamNew.C:75
 CalibClParamNew.C:76
 CalibClParamNew.C:77
 CalibClParamNew.C:78
 CalibClParamNew.C:79
 CalibClParamNew.C:80
 CalibClParamNew.C:81
 CalibClParamNew.C:82
 CalibClParamNew.C:83
 CalibClParamNew.C:84
 CalibClParamNew.C:85
 CalibClParamNew.C:86
 CalibClParamNew.C:87
 CalibClParamNew.C:88
 CalibClParamNew.C:89
 CalibClParamNew.C:90
 CalibClParamNew.C:91
 CalibClParamNew.C:92
 CalibClParamNew.C:93
 CalibClParamNew.C:94
 CalibClParamNew.C:95
 CalibClParamNew.C:96
 CalibClParamNew.C:97
 CalibClParamNew.C:98
 CalibClParamNew.C:99
 CalibClParamNew.C:100
 CalibClParamNew.C:101
 CalibClParamNew.C:102
 CalibClParamNew.C:103
 CalibClParamNew.C:104
 CalibClParamNew.C:105
 CalibClParamNew.C:106
 CalibClParamNew.C:107
 CalibClParamNew.C:108
 CalibClParamNew.C:109
 CalibClParamNew.C:110
 CalibClParamNew.C:111
 CalibClParamNew.C:112
 CalibClParamNew.C:113
 CalibClParamNew.C:114
 CalibClParamNew.C:115
 CalibClParamNew.C:116
 CalibClParamNew.C:117
 CalibClParamNew.C:118
 CalibClParamNew.C:119
 CalibClParamNew.C:120
 CalibClParamNew.C:121
 CalibClParamNew.C:122
 CalibClParamNew.C:123
 CalibClParamNew.C:124
 CalibClParamNew.C:125
 CalibClParamNew.C:126
 CalibClParamNew.C:127
 CalibClParamNew.C:128
 CalibClParamNew.C:129
 CalibClParamNew.C:130
 CalibClParamNew.C:131
 CalibClParamNew.C:132
 CalibClParamNew.C:133
 CalibClParamNew.C:134
 CalibClParamNew.C:135
 CalibClParamNew.C:136
 CalibClParamNew.C:137
 CalibClParamNew.C:138
 CalibClParamNew.C:139
 CalibClParamNew.C:140
 CalibClParamNew.C:141
 CalibClParamNew.C:142
 CalibClParamNew.C:143
 CalibClParamNew.C:144