ROOT logo
/*
  // .L $ALICE_ROOT/TPC/scripts/OCDBscan/makeDefaultPlots.C
  Init();
  MakeAliases();

*/



TTree * guiTree=0;
TObjArray * picArray = new TObjArray;
TCut cutUser="run>114500";

void makeDefaultPlots(){
  //
  // make default trend plots
  //
  Init();
  MakeAliases();
  MakePlotDrift();
  //
  TFile f("calibTrend.root","recreate");
  picArray->Write();
  f.Close();
}

void Init(){
  //
  // Init trees and style
  // summary tree supposed to be in the given file
  //
  TFile *f = new TFile("calibTimeSummary.root");
  guiTree=(TTree*)f->Get("dcs");
  guiTree->SetMarkerStyle(25);
  guiTree->SetMarkerSize(0.5);
}

void MakeAliases(){
  //
  // Make "reasonable" alaiase for variables
  // Define te cut variables for visualization
  //
  // Drift velocity   
  guiTree->SetAlias("vitsOK","abs(dits)<3600*0.5");  
  //TOF alaieases
  guiTree->SetAlias("vtofOK","abs(ALIGN_TOF_TPC_DELTATHETA-ALIGN_TOF_TPC_DELTATHETA)<0.0003&&abs(ALIGN_TOF_TPC_DELTAPSI-ALIGN_TOF_TPC_DELTAPSI)<0.0003&&abs(ALIGN_TOF_TPC_DELTATHETA)<0.003&&abs(ALIGN_TOF_TPC_DELTAPSI)<0.003");  
  guiTree->SetAlias("vdriftTOF","ALIGN_TOFB_TPC_DRIFTVD");
  //  angular alignent within limits 
  // 
  //
  // distance to measurement 1/2 hour 
  // Goofie
  //
  guiTree->SetAlias("vgoofieOK","abs(goofie.fElements[3]-2.7)<0.15&&abs(goofie.fElements[5]/goofie.fElements[6]-0.8)<0.05&&abs(goofie.fElements[2]-9.)<4&&abs(goofie.fElements[9]/goofieMedian.fElements[9]-1)<0.05&&abs(goofie.fElements[3]-goofieMean.fElements[3])<0.02");
  // Cuts:
  // reasonable drift velocity - outlyer removal
  // ration of the peak are near/far
  // reasonable CO2 information
  // Q value/median in range
  // V drift value-mean in range
  //
  // Goofie normalization:
  guiTree->Draw("goofie.fElements[14]","vgoofieOK");  // nominal pressure
  Double_t goofiePNom = guiTree->GetHistogram()->GetMean();
  guiTree->Draw("goofie.fElements[15]","vgoofieOK");  // nominal pressure
  Double_t goofieT1PNom = guiTree->GetHistogram()->GetMean();
  guiTree->Draw("goofie.fElements[3]","vgoofieOK");
  Double_t goofieDriftNom = guiTree->GetHistogram()->GetMean(); // nominal drift velocity
  guiTree->Draw("goofie.fElements[9]","vgoofieOK");
  Double_t goofieAreaFar = guiTree->GetHistogram()->GetMean();
  guiTree->Draw("goofie.fElements[10]","vgoofieOK");
  Double_t goofieAreaNear = guiTree->GetHistogram()->GetMean();
  //
  guiTree->SetAlias("goofieP",Form("goofie.fElements[14]/%f",goofiePNom));
  guiTree->SetAlias("goofieT1P",Form("goofie.fElements[15]/%f",goofieT1PNom));
  guiTree->SetAlias("goofieVd",Form("goofie.fElements[3]/%f",goofieDriftNom));
  guiTree->SetAlias("goofieAreaNear",Form("(goofie.fElements[9]/%f)",goofieAreaFar));
  guiTree->SetAlias("goofieAreaFar",Form("(goofie.fElements[10]/%f)",goofieAreaNear));
  guiTree->Draw("(goofieVd*goofieP-1)-vdriftITS","vitsOK&&vgoofieOK");
  Double_t goofieITSNorm = guiTree->GetHistogram()->GetMean();
  guiTree->SetAlias("vdriftGoofie",Form("(goofieVd*goofieP-1)-%f",goofieITSNorm));
  //
  
}

void MakePlotDrift(){
  //
  // Compare drift velocity calibration 
  // with  Goofie calibration
  //
  //
  Int_t entries =0;
  TGraph *graphITS =0;
  TGraph *graphTOF =0;
  TGraph *graphGoofie =0;
  entries = guiTree->Draw("100*vdriftITS:time","vitsOK"+cutUser,"");
  graphITS = new TGraph(entries,guiTree->GetV2(), guiTree->GetV1());  
  entries = guiTree->Draw("100*vdriftTOF:time","vitsOK&&vtofOK"+cutUser,"");
  graphTOF = new TGraph(entries,guiTree->GetV2(), guiTree->GetV1());  
  guiTree->Draw("100*vdriftGoofie:time","vitsOK&&vgoofieOK"+cutUser,"same");
  graphGoofie = new TGraph(entries,guiTree->GetV2(), guiTree->GetV1());
  //
  graphITS->SetMarkerStyle(25);
  graphITS->SetMarkerSize(0.5);
  graphITS->SetMarkerColor(2);
  graphTOF->SetMarkerStyle(26);
  graphTOF->SetMarkerSize(0.5);
  graphTOF->SetMarkerColor(3);
  graphGoofie->SetMarkerStyle(26);
  graphGoofie->SetMarkerSize(0.5);
  graphGoofie->SetMarkerColor(4);
  //
  TCanvas * cDrift = new TCanvas("DriftTrend","Driftt Trend",900,600);
  cDrift->cd();
  graphITS->Draw("ap");
  graphITS->GetXaxis()->SetTimeDisplay(1);
  graphITS->GetYaxis()->SetTitle("v_{dcorr} (%)");
  graphGoofie->Draw("p");
  graphTOF->Draw("p");
  TLegend *legend = new TLegend(0.7,0.7,1,1, "Drift velocity correction");
  legend->AddEntry(graphITS,"TPC-ITS");
  legend->AddEntry(graphTOF,"TPC-TOF");
  legend->AddEntry(graphGoofie,"Goofie");
  legend->Draw();
  // Add picture to the array
  //
  picArray->AddLast(cDrift->Clone());
  //
  //
  
}
 makeDefaultPlots.C:1
 makeDefaultPlots.C:2
 makeDefaultPlots.C:3
 makeDefaultPlots.C:4
 makeDefaultPlots.C:5
 makeDefaultPlots.C:6
 makeDefaultPlots.C:7
 makeDefaultPlots.C:8
 makeDefaultPlots.C:9
 makeDefaultPlots.C:10
 makeDefaultPlots.C:11
 makeDefaultPlots.C:12
 makeDefaultPlots.C:13
 makeDefaultPlots.C:14
 makeDefaultPlots.C:15
 makeDefaultPlots.C:16
 makeDefaultPlots.C:17
 makeDefaultPlots.C:18
 makeDefaultPlots.C:19
 makeDefaultPlots.C:20
 makeDefaultPlots.C:21
 makeDefaultPlots.C:22
 makeDefaultPlots.C:23
 makeDefaultPlots.C:24
 makeDefaultPlots.C:25
 makeDefaultPlots.C:26
 makeDefaultPlots.C:27
 makeDefaultPlots.C:28
 makeDefaultPlots.C:29
 makeDefaultPlots.C:30
 makeDefaultPlots.C:31
 makeDefaultPlots.C:32
 makeDefaultPlots.C:33
 makeDefaultPlots.C:34
 makeDefaultPlots.C:35
 makeDefaultPlots.C:36
 makeDefaultPlots.C:37
 makeDefaultPlots.C:38
 makeDefaultPlots.C:39
 makeDefaultPlots.C:40
 makeDefaultPlots.C:41
 makeDefaultPlots.C:42
 makeDefaultPlots.C:43
 makeDefaultPlots.C:44
 makeDefaultPlots.C:45
 makeDefaultPlots.C:46
 makeDefaultPlots.C:47
 makeDefaultPlots.C:48
 makeDefaultPlots.C:49
 makeDefaultPlots.C:50
 makeDefaultPlots.C:51
 makeDefaultPlots.C:52
 makeDefaultPlots.C:53
 makeDefaultPlots.C:54
 makeDefaultPlots.C:55
 makeDefaultPlots.C:56
 makeDefaultPlots.C:57
 makeDefaultPlots.C:58
 makeDefaultPlots.C:59
 makeDefaultPlots.C:60
 makeDefaultPlots.C:61
 makeDefaultPlots.C:62
 makeDefaultPlots.C:63
 makeDefaultPlots.C:64
 makeDefaultPlots.C:65
 makeDefaultPlots.C:66
 makeDefaultPlots.C:67
 makeDefaultPlots.C:68
 makeDefaultPlots.C:69
 makeDefaultPlots.C:70
 makeDefaultPlots.C:71
 makeDefaultPlots.C:72
 makeDefaultPlots.C:73
 makeDefaultPlots.C:74
 makeDefaultPlots.C:75
 makeDefaultPlots.C:76
 makeDefaultPlots.C:77
 makeDefaultPlots.C:78
 makeDefaultPlots.C:79
 makeDefaultPlots.C:80
 makeDefaultPlots.C:81
 makeDefaultPlots.C:82
 makeDefaultPlots.C:83
 makeDefaultPlots.C:84
 makeDefaultPlots.C:85
 makeDefaultPlots.C:86
 makeDefaultPlots.C:87
 makeDefaultPlots.C:88
 makeDefaultPlots.C:89
 makeDefaultPlots.C:90
 makeDefaultPlots.C:91
 makeDefaultPlots.C:92
 makeDefaultPlots.C:93
 makeDefaultPlots.C:94
 makeDefaultPlots.C:95
 makeDefaultPlots.C:96
 makeDefaultPlots.C:97
 makeDefaultPlots.C:98
 makeDefaultPlots.C:99
 makeDefaultPlots.C:100
 makeDefaultPlots.C:101
 makeDefaultPlots.C:102
 makeDefaultPlots.C:103
 makeDefaultPlots.C:104
 makeDefaultPlots.C:105
 makeDefaultPlots.C:106
 makeDefaultPlots.C:107
 makeDefaultPlots.C:108
 makeDefaultPlots.C:109
 makeDefaultPlots.C:110
 makeDefaultPlots.C:111
 makeDefaultPlots.C:112
 makeDefaultPlots.C:113
 makeDefaultPlots.C:114
 makeDefaultPlots.C:115
 makeDefaultPlots.C:116
 makeDefaultPlots.C:117
 makeDefaultPlots.C:118
 makeDefaultPlots.C:119
 makeDefaultPlots.C:120
 makeDefaultPlots.C:121
 makeDefaultPlots.C:122
 makeDefaultPlots.C:123
 makeDefaultPlots.C:124
 makeDefaultPlots.C:125
 makeDefaultPlots.C:126
 makeDefaultPlots.C:127
 makeDefaultPlots.C:128
 makeDefaultPlots.C:129
 makeDefaultPlots.C:130
 makeDefaultPlots.C:131
 makeDefaultPlots.C:132