ROOT logo
/*
 Small macro to show perforamance of the gain calibration
 tHe list of the  files with tpc calib tracks is supposed to be in cosmic.txt file 
 Supposing the 


 gSystem->Load("libSTAT.so")
 .x ~/rootlogon.C
 .L $ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+
 AliXRDPROOFtoolkit tool;
 //gSystem->Load("/usr/local/grid/XRootd/GSI/lib/libXrdClient.so");
 //TProof * proof = TProof::Open("miranov@lxgrid2.gsi.de");

*/

TChain * chain = 0;
TChain * chaing = 0;

TStatToolkit toolkit;

void Init(){

  AliCDBManager::Instance()->SetRun(0);
  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  AliTPCClusterParam *clparam = AliTPCcalibDB::Instance()->GetClusterParam();
  AliTPCClusterParam::SetInstance(clparam);  
  //
  AliXRDPROOFtoolkit tool;
  chain = tool.MakeChain("cosmic.txt","dEdxT",0,1000)
  chain->Lookup();
  chaing = tool.MakeChain("cosmic.txt","TrackG",0,1000)
  chaing->Lookup();
  //
  chain->SetAlias("dr","(250-abs(meanPos.fElements[4]))/250.");
  chain->SetAlias("tz","(0+abs(parZ.fElements[1]))");
  chain->SetAlias("ty","(0+abs(parY.fElements[1]))");
  chain->SetAlias("corrg","sqrt((1+ty^2)*(1+tz^2))");
}





void MakeFits(){
  TStatToolkit toolkit;
  Double_t chi2;
  TVectorD param;
  TMatrixD covar;
  Int_t npoints;
  TString *strq0 = toolkit.FitPlane(chain,"dedxQ.fElements[2]","dr++tz++ty++dr*tz++dr*ty++ty*tz","IPad==0",chi2,npoints,param,covar,0,20000);
  TString *strq1 = toolkit.FitPlane(chain,"dedxQ.fElements[2]","dr++tz++ty++dr*tz++dr*ty++ty*tz","IPad==1",chi2,npoints,param,covar,0,20000);
  TString *strq2 = toolkit.FitPlane(chain,"dedxQ.fElements[2]","dr++tz++ty++dr*tz++dr*ty++ty*tz","IPad==2",chi2,npoints,param,covar,0,20000);
  TString *strm0 = toolkit.FitPlane(chain,"dedxM.fElements[2]","dr++tz++ty++dr*tz++dr*ty++ty*tz","IPad==0",chi2,npoints,param,covar,0,20000);
  TString *strm1 = toolkit.FitPlane(chain,"dedxM.fElements[2]","dr++tz++ty++dr*tz++dr*ty++ty*tz","IPad==1",chi2,npoints,param,covar,0,20000);
  TString *strm2 = toolkit.FitPlane(chain,"dedxM.fElements[2]","dr++tz++ty++dr*tz++dr*ty++ty*tz","IPad==2",chi2,npoints,param,covar,0,20000);  
  chain->SetAlias("normqt0",strq0.Data());
  chain->SetAlias("normqt1",strq1.Data());
  chain->SetAlias("normqt2",strq2.Data());
  chain->SetAlias("normqm0",strm0.Data());
  chain->SetAlias("normqm1",strm1.Data());
  chain->SetAlias("normqm2",strm2.Data());
}

TFile fqplot("qplot.root","update");


void MakePlotsQS(){
  
  chain->Draw("dedxQ.fElements[2]:sector>>hisQ_sector(36,0,36)","IPad==0&&P>1","prof*",1000000);
  chain->Draw("dedxQ.fElements[2]/corrg:sector>>hisQ_sector_corrg(36,0,36)","IPad==0&&P>1","prof*",1000000);
  chain->Draw("dedxQ.fElements[2]/AliTPCClusterParam::SQnorm(0,0,dr,ty,tz):sector>>hisQ_sector_corrcal(36,0,36)","IPad==0&&P>1","prof*",1000000);

  TProfile * profq_sector = (TProfile*) gROOT->FindObject("hisQ_sector");
  TProfile * profq_sector_corrg = (TProfile*) gROOT->FindObject("hisQ_sector_corrg");
  TProfile * profq_sector_corrcal = (TProfile*) gROOT->FindObject("hisQ_sector_corrcal");
  profq_sector->SetMarkerStyle(22);
  profq_sector_corrg->SetMarkerStyle(24);
  profq_sector_corrcal->SetMarkerStyle(26);
  //
  profq_sector->SetXTitle("Sector number");
  profq_sector->SetYTitle("Mean amplitude");  
  profq_sector->SetMinimum(0);
  profq_sector->Draw();
  profq_sector_corrg->Draw("same");
  profq_sector_corrcal->Draw("same");
  fqplot.cd();
  profq_sector->Write("qt_sector_0");
  profq_sector_corrg->Write("qt_sector_1");
  profq_sector_corrcal->Write("qt_sector_2");
  gPad->Write("qt_sector");
}
  

void MakePlotsTY(){
  //
  //
  //
  chain->Draw("dedxQ.fElements[2]:ty>>hisQ_ty(20,0,1.5)","IPad==0&&P>1","prof*",1000000);
  chain->Draw("dedxQ.fElements[2]/corrg:ty>>hisQ_ty_corrg(20,0,1.5)","IPad==0&&P>1","prof*",1000000);
  chain->Draw("dedxQ.fElements[2]/AliTPCClusterParam::SQnorm(0,0,dr,ty,tz):ty>>hisQ_ty_corrcal(20,0,1.5)","IPad==0&&P>1","prof*",1000000);

  TProfile * profq_ty = (TProfile*) gROOT->FindObject("hisQ_ty");
  TProfile * profq_ty_corrg = (TProfile*) gROOT->FindObject("hisQ_ty_corrg");
  TProfile * profq_ty_corrcal = (TProfile*) gROOT->FindObject("hisQ_ty_corrcal");
  profq_ty->SetMarkerStyle(22);
  profq_ty_corrg->SetMarkerStyle(24);
  profq_ty_corrcal->SetMarkerStyle(26);
  //
  profq_ty->SetXTitle("tan(#phi)");
  profq_ty->SetYTitle("Mean amplitude");  
  profq_ty->SetMinimum(0);
  profq_ty->Draw();
  profq_ty_corrg->Draw("same");
  profq_ty_corrcal->Draw("same");
  fqplot.cd();
  profq_ty->Write("qt_ty_0");
  profq_ty_corrg->Write("qt_ty_1");
  profq_ty_corrcal->Write("qt_ty_2");
  gPad->Write("qt_ty");
}


void MakePlotsTZ(){
  //
  //
  //
  chain->Draw("dedxQ.fElements[2]:tz>>hisQ_tz(20,0,1.5)","IPad==0&&P>1","prof*",1000000);
  chain->Draw("dedxQ.fElements[2]/corrg:tz>>hisQ_tz_corrg(20,0,1.5)","IPad==0&&P>1","prof*",1000000);
  chain->Draw("dedxQ.fElements[2]/AliTPCClusterParam::SQnorm(0,0,dr,ty,tz):tz>>hisQ_tz_corrcal(20,0,1.5)","IPad==0&&P>1","prof*",1000000);

  TProfile * profq_tz = (TProfile*) gROOT->FindObject("hisQ_tz");
  TProfile * profq_tz_corrg = (TProfile*) gROOT->FindObject("hisQ_tz_corrg");
  TProfile * profq_tz_corrcal = (TProfile*) gROOT->FindObject("hisQ_tz_corrcal");
  profq_tz->SetMarkerStyle(22);
  profq_tz_corrg->SetMarkerStyle(24);
  profq_tz_corrcal->SetMarkerStyle(26);
  //
  profq_tz->SetXTitle("tan(#theta)");
  profq_tz->SetYTitle("Mean amplitude");  
  profq_tz->SetMinimum(0);
  profq_tz->Draw();
  profq_tz_corrg->Draw("same");
  profq_tz_corrcal->Draw("same");
  fqplot.cd();
  profq_tz->Write("qt_tz_0");
  profq_tz_corrg->Write("qt_tz_1");
  profq_tz_corrcal->Write("qt_tz_2");
  gPad->Write("qt_tz");
}

void MakePlotsDR(){
  //
  //
  //
  chain->Draw("dedxQ.fElements[2]:dr>>hisQ_dr(20,0,1.)","IPad==0&&P>1","prof*",1000000);
  chain->Draw("dedxQ.fElements[2]/corrg:dr>>hisQ_dr_corrg(20,0,1.)","IPad==0&&P>1","prof*",1000000);
  chain->Draw("dedxQ.fElements[2]/AliTPCClusterParam::SQnorm(0,0,dr,ty,dr):dr>>hisQ_dr_corrcal(20,0,1.)","IPad==0&&P>1","prof*",1000000);

  TProfile * profq_dr = (TProfile*) gROOT->FindObject("hisQ_dr");
  TProfile * profq_dr_corrg = (TProfile*) gROOT->FindObject("hisQ_dr_corrg");
  TProfile * profq_dr_corrcal = (TProfile*) gROOT->FindObject("hisQ_dr_corrcal");
  profq_dr->SetMarkerStyle(22);
  profq_dr_corrg->SetMarkerStyle(24);
  profq_dr_corrcal->SetMarkerStyle(26);
  //
  profq_dr->SetXTitle("drift length(unit)");
  profq_dr->SetYTitle("Mean amplitude");  
  profq_dr->SetMinimum(0);
  profq_dr->Draw();
  profq_dr_corrg->Draw("same");
  profq_dr_corrcal->Draw("same");
  fqplot.cd();
  profq_dr->Write("qt_dr_0");
  profq_dr_corrg->Write("qt_dr_1");
  profq_dr_corrcal->Write("qt_dr_2");
  gPad->Write("qt_dr");
}



void MakePlotsQ(){
  //
  //
  //
  //
  chaing->Draw("Track.fdEdx>>his0dedx(100,0,200)","Track.fN>100&&abs(Track.P()-15)<3","",20000);
  chaing->Draw("Track.CookdEdxNorm(0.02,0.6,0,0,160)/3.71>>his0dedxnormQ(100,0,200)","Track.fN>100&&abs(Track.P()-15)<3","",20000);
  TH1F * his0dedx = gROOT->FindObject("his0dedx");
  TH1F * his0dedxnormq = gROOT->FindObject("his0dedxnormQ");
  his0dedxnormq->SetXTitle("dEdx (rel. unit)")
  his0dedxnormq->Draw();
  his0dedx->Draw("same");
 

  chaing->Draw("Track.CookdEdxNorm(0.02,0.6,0,0,160)/3.71:Track.GetP()>>hispdedxnorm(10,5,100)","Track.fN>100","prof",20000);


  chaing->Draw("Track.fdEdx:sector0>>hisdedx(36,0,36)","Track.fN>60","prof",10000);
  chaing->Draw("Track.CookdEdxNorm(0.02,0.6,0,0,160)/3.71:sector0>>hisdedxnormQ(36,0,36)","Track.fN>60","prof",10000);

}












 gainCalib.C:1
 gainCalib.C:2
 gainCalib.C:3
 gainCalib.C:4
 gainCalib.C:5
 gainCalib.C:6
 gainCalib.C:7
 gainCalib.C:8
 gainCalib.C:9
 gainCalib.C:10
 gainCalib.C:11
 gainCalib.C:12
 gainCalib.C:13
 gainCalib.C:14
 gainCalib.C:15
 gainCalib.C:16
 gainCalib.C:17
 gainCalib.C:18
 gainCalib.C:19
 gainCalib.C:20
 gainCalib.C:21
 gainCalib.C:22
 gainCalib.C:23
 gainCalib.C:24
 gainCalib.C:25
 gainCalib.C:26
 gainCalib.C:27
 gainCalib.C:28
 gainCalib.C:29
 gainCalib.C:30
 gainCalib.C:31
 gainCalib.C:32
 gainCalib.C:33
 gainCalib.C:34
 gainCalib.C:35
 gainCalib.C:36
 gainCalib.C:37
 gainCalib.C:38
 gainCalib.C:39
 gainCalib.C:40
 gainCalib.C:41
 gainCalib.C:42
 gainCalib.C:43
 gainCalib.C:44
 gainCalib.C:45
 gainCalib.C:46
 gainCalib.C:47
 gainCalib.C:48
 gainCalib.C:49
 gainCalib.C:50
 gainCalib.C:51
 gainCalib.C:52
 gainCalib.C:53
 gainCalib.C:54
 gainCalib.C:55
 gainCalib.C:56
 gainCalib.C:57
 gainCalib.C:58
 gainCalib.C:59
 gainCalib.C:60
 gainCalib.C:61
 gainCalib.C:62
 gainCalib.C:63
 gainCalib.C:64
 gainCalib.C:65
 gainCalib.C:66
 gainCalib.C:67
 gainCalib.C:68
 gainCalib.C:69
 gainCalib.C:70
 gainCalib.C:71
 gainCalib.C:72
 gainCalib.C:73
 gainCalib.C:74
 gainCalib.C:75
 gainCalib.C:76
 gainCalib.C:77
 gainCalib.C:78
 gainCalib.C:79
 gainCalib.C:80
 gainCalib.C:81
 gainCalib.C:82
 gainCalib.C:83
 gainCalib.C:84
 gainCalib.C:85
 gainCalib.C:86
 gainCalib.C:87
 gainCalib.C:88
 gainCalib.C:89
 gainCalib.C:90
 gainCalib.C:91
 gainCalib.C:92
 gainCalib.C:93
 gainCalib.C:94
 gainCalib.C:95
 gainCalib.C:96
 gainCalib.C:97
 gainCalib.C:98
 gainCalib.C:99
 gainCalib.C:100
 gainCalib.C:101
 gainCalib.C:102
 gainCalib.C:103
 gainCalib.C:104
 gainCalib.C:105
 gainCalib.C:106
 gainCalib.C:107
 gainCalib.C:108
 gainCalib.C:109
 gainCalib.C:110
 gainCalib.C:111
 gainCalib.C:112
 gainCalib.C:113
 gainCalib.C:114
 gainCalib.C:115
 gainCalib.C:116
 gainCalib.C:117
 gainCalib.C:118
 gainCalib.C:119
 gainCalib.C:120
 gainCalib.C:121
 gainCalib.C:122
 gainCalib.C:123
 gainCalib.C:124
 gainCalib.C:125
 gainCalib.C:126
 gainCalib.C:127
 gainCalib.C:128
 gainCalib.C:129
 gainCalib.C:130
 gainCalib.C:131
 gainCalib.C:132
 gainCalib.C:133
 gainCalib.C:134
 gainCalib.C:135
 gainCalib.C:136
 gainCalib.C:137
 gainCalib.C:138
 gainCalib.C:139
 gainCalib.C:140
 gainCalib.C:141
 gainCalib.C:142
 gainCalib.C:143
 gainCalib.C:144
 gainCalib.C:145
 gainCalib.C:146
 gainCalib.C:147
 gainCalib.C:148
 gainCalib.C:149
 gainCalib.C:150
 gainCalib.C:151
 gainCalib.C:152
 gainCalib.C:153
 gainCalib.C:154
 gainCalib.C:155
 gainCalib.C:156
 gainCalib.C:157
 gainCalib.C:158
 gainCalib.C:159
 gainCalib.C:160
 gainCalib.C:161
 gainCalib.C:162
 gainCalib.C:163
 gainCalib.C:164
 gainCalib.C:165
 gainCalib.C:166
 gainCalib.C:167
 gainCalib.C:168
 gainCalib.C:169
 gainCalib.C:170
 gainCalib.C:171
 gainCalib.C:172
 gainCalib.C:173
 gainCalib.C:174
 gainCalib.C:175
 gainCalib.C:176
 gainCalib.C:177
 gainCalib.C:178
 gainCalib.C:179
 gainCalib.C:180
 gainCalib.C:181
 gainCalib.C:182
 gainCalib.C:183
 gainCalib.C:184
 gainCalib.C:185
 gainCalib.C:186
 gainCalib.C:187
 gainCalib.C:188
 gainCalib.C:189
 gainCalib.C:190
 gainCalib.C:191
 gainCalib.C:192
 gainCalib.C:193
 gainCalib.C:194
 gainCalib.C:195
 gainCalib.C:196
 gainCalib.C:197
 gainCalib.C:198
 gainCalib.C:199
 gainCalib.C:200
 gainCalib.C:201
 gainCalib.C:202
 gainCalib.C:203
 gainCalib.C:204
 gainCalib.C:205
 gainCalib.C:206
 gainCalib.C:207
 gainCalib.C:208
 gainCalib.C:209
 gainCalib.C:210
 gainCalib.C:211
 gainCalib.C:212
 gainCalib.C:213
 gainCalib.C:214