-/*
- .L AliGenInfo.C+
- .L TestAnalisys.C+
- AddChains(868); // AddChains(runNumber);
- Select(); // make default selection of data
- MakePictures("pic868");
-*/
+/// \file TestAnalisys.C
+///
+/// ~~~{.cxx}
+/// .L AliGenInfo.C+
+/// .L TestAnalisys.C+
+/// AddChains(868); // AddChains(runNumber);
+/// Select(); // make default selection of data
+/// MakePictures("pic868");
+/// ~~~
#include "TFile.h"
#include "TTree.h"
#include "AliTrackReference.h"
#include "AliTPCParam.h"
#include "AliDetector.h"
-#include "AliStack.h"
+#include "AliStack.h"
#include "AliGenInfo.h"
void ResYZ(TCut cut0, TCut cut1, char * description);
void SysYX(TCut cut0, char * description);
void SysZX(TCut cut0, char * description);
-//
+
TProfile * ProfileMaxRow(TCut cut0, char *name, Int_t max);
TProfile * ProfileMaxPhi(TCut cut0, char *name, Int_t max);
TProfile * ProfileMaxZ(TCut cut0, char *name, Int_t max);
void MakePictures(char *dirname){
- //
- //
- //
- // Define Uli Style
+ /// Define Uli Style
+
gROOT->SetStyle("Plain");
gStyle->SetFillColor(10);
gStyle->SetPadColor(10);
void AddChains(Int_t run){
- //
- // add files to the chains + check consistency
- //
+ /// add files to the chains + check consistency
+
ifstream in0;
ifstream in1;
ifstream in2;
runDesc+=run;
// TPC tracks
//
- sprintf(strcl,"ls run%d*/TPCtracks.root > /tmp/files.txt", run);
+ sprintf(strcl,"ls *%d*/TPCtracks.root > files.txt", run);
gSystem->Exec(strcl);
- in0.open("/tmp/files.txt");
+ in0.open("files.txt");
for (;in0>>sfile;){
if (sfile.Length()==0) break;
printf("%s\n",sfile.Data());
}
//
// Fitted signals
- sprintf(strcl,"ls run%d*/FitSignal.root > /tmp/files.txt", run);
+ sprintf(strcl,"ls *%d*/FitSignal.root > files.txt", run);
gSystem->Exec(strcl);
- in1.open("/tmp/files.txt");
+ in1.open("files.txt");
for (;in1>>sfile;){
if (sfile.Length()==0) break;
printf("%s\n",sfile.Data());
}
//
// Fitted pedestal
- sprintf(strcl,"ls run%d*/TPCsignal.root > /tmp/files.txt", run);
+ sprintf(strcl,"ls *%d*/TPCsignal.root > files.txt", run);
gSystem->Exec(strcl);
- in2.open("/tmp/files.txt");
+ in2.open("files.txt");
for (;in2>>sfile;){
if (sfile.Length()==0) break;
printf("%s\n",sfile.Data());
}
//
// Random signals
- sprintf(strcl,"ls run%d*/TPCsignal.root > /tmp/files.txt", run);
+ sprintf(strcl,"ls *%d*/TPCsignal.root > files.txt", run);
gSystem->Exec(strcl);
- in4.open("/tmp/files.txt");
+ in4.open("files.txt");
for (;in4>>sfile;){
if (sfile.Length()==0) break;
printf("%s\n",sfile.Data());
// Rec points trees
//
printf("\n IMPORT REC points");
- sprintf(strcl,"ls run%d*/*RecPoints* > /tmp/files.txt", run);
+ sprintf(strcl,"ls *%d*/*RecPoints* > files.txt", run);
gSystem->Exec(strcl);
- in3.open("/tmp/files.txt");
+ in3.open("files.txt");
for (;in3>>sfile;){
if (sfile.Length()==0) break;
printf("%s\n",sfile.Data());
}
void Select(){
- //
- // base cut on the tracks
- //
- comp.fTree->Draw(">>listTracks","Track.fN>30&&abs(Track.fP4)<0.002");
+ /// base cut on the tracks
+
+ comp.fTree->Draw(">>listTracks","Etrack.fTPCncls>30&&abs(Etrack.fIp.fP[4])<1");
comp.fTree->SetEventList(listTracks);
//
compF.fTree->Draw(">>listFitS","p2>0&&p2<5&&p1<900&&p0<10000&&p4<1&&p4>0&&p5<p3&&chi2<150");
}
void SelectLaser(){
- //
- // base cut on the tracks
- //
- comp.fTree->Draw(">>listTracks","Track.fN>20&&abs(Track.fP4)<0.001&&abs(Etrack.fP[3])<0.01");
+ /// base cut on the tracks
+
+ comp.fTree->Draw(">>listTracks","Etrack.fTPCncls>20&&abs(Etrack.fIp.fP[4])<1&&abs(Etrack.fIp.fP[3])<0.01");
comp.fTree->SetEventList(listTracks);
//
compF.fTree->Draw(">>listFitS","p2>0&&p2<5&&p1<900&&p0<10000&&p4<1&&p4>0&&p5<p3&&chi2<150");
// make default aliases
//
// laser z beam
- comp.fTree->SetAlias("lz0","abs(Etrack.fP[1]-20)<5");
- comp.fTree->SetAlias("lz1","abs(Etrack.fP[1]-70)<20");
- comp.fTree->SetAlias("lz2","abs(Etrack.fP[1]-150)<20");
- comp.fTree->SetAlias("lz3","abs(Etrack.fP[1]-210)<20");
+ comp.fTree->SetAlias("lz0","abs(Etrack.fIp.fP[1]-20)<5");
+ comp.fTree->SetAlias("lz1","abs(Etrack.fIp.fP[1]-70)<20");
+ comp.fTree->SetAlias("lz2","abs(Etrack.fIp.fP[1]-150)<20");
+ comp.fTree->SetAlias("lz3","abs(Etrack.fIp.fP[1]-210)<20");
}
void PRFYZ(TCut cut0, TCut cut1, char * description){
- //
- // plot Pad response function as funtion of drift z
- //
- //
+ /// plot Pad response function as funtion of drift z
+
TF1 * f1 = new TF1("fdiff","sqrt([0]*[0]+(250-x)*[1]*[1])");
f1->SetParameter(1,0.2);
f1->SetParameter(0,0.2);
- comp.DrawXY("Cl.fZ","sqrt(Cl.fSigmaY2)","abs(Track.fTrackPoints.GetAngleY())<0.05","Track.fTrackPoints.fTX>0"+cut0,5,10,240,-0,1);
+ comp.DrawXY("abs(Cl.fZ)","sqrt(Cl.fSigmaY2)","abs(Track.fTrackPoints.GetAngleY())<0.05","Track.fTrackPoints.fTX>0"+cut0,5,10,240,-0,1);
TH1F * prfInnerY = (TH1F*)comp.fMean->Clone();
- comp.DrawXY("Cl.fZ","sqrt(Cl.fSigmaY2)","abs(Track.fTrackPoints.GetAngleY())<0.05","Track.fTrackPoints.fTX>0"+cut1,5,10,240,-0,1);
+ comp.DrawXY("abs(Cl.fZ)","sqrt(Cl.fSigmaY2)","abs(Track.fTrackPoints.GetAngleY())<0.05","Track.fTrackPoints.fTX>0"+cut1,5,10,240,-0,1);
TH1F * prfOuterY = (TH1F*)comp.fMean->Clone();
//
//
void ResYZ(TCut cut0, TCut cut1, char * description){
- //
- // resolution in y coordinate as function of z
- //
+ /// resolution in y coordinate as function of z
+
TF1 * f1 = new TF1("fdiff","sqrt([0]*[0]+(250-x)*[1]*[1])");
f1->SetParameter(1,0.2);
f1->SetParameter(0,0.2);
- comp.DrawXY("Cl.fZ","Track.fTrackPoints.GetY()-Cl.GetY()","abs(Track.fTrackPoints.GetAngleY())<0.05","Track.fTrackPoints.fTX>0"+cut0,5,10,240,-0.5,0.5);
+ comp.DrawXY("abs(Cl.fZ)","Track.fTrackPoints.GetY()-Cl.GetY()","abs(Track.fTrackPoints.GetAngleY())<0.05","Track.fTrackPoints.fTX>0"+cut0,5,10,240,-0.5,0.5);
TH1F * prfInnerY = (TH1F*)comp.fRes->Clone();
- comp.DrawXY("Cl.fZ","Track.fTrackPoints.GetY()-Cl.GetY()","abs(Track.fTrackPoints.GetAngleY())<0.05","Track.fTrackPoints.fTX>0"+cut1,5,10,240,-0.5,0.5);
+ comp.DrawXY("abs(Cl.fZ)","Track.fTrackPoints.GetY()-Cl.GetY()","abs(Track.fTrackPoints.GetAngleY())<0.05","Track.fTrackPoints.fTX>0"+cut1,5,10,240,-0.5,0.5);
TH1F * prfOuterY = (TH1F*)comp.fRes->Clone();
//
//
}
void SysYX(TCut cut0, char * description){
- //
- //
- //
+ ///
+
TProfile * profA = new TProfile("profY","profY",70,89,250);
comp.fTree->Draw("Cl.fY-Track.fTrackPoints.GetY():Track.fTrackPoints.GetX()>>profY","abs(Cl.fY-Track.fTrackPoints.GetY())<1&&Track.fTrackPoints.fTX>10"+cut0,"prof");
profA->SetXTitle("Local X (cm)");
}
void SysZX(TCut cut0, char * description){
- //
- //
- //
+ ///
+
TProfile * profA = new TProfile("profZ","profZ",70,89,250);
- comp.fTree->Draw("Cl.fZ-Track.fTrackPoints.GetZ():Track.fTrackPoints.GetX()>>profZ","abs(Cl.fZ-Track.fTrackPoints.GetZ())<1&&Track.fTrackPoints.fTX>10"+cut0,"prof");
+ comp.fTree->Draw("abs(Cl.fZ)-abs(Track.fTrackPoints.GetZ()):Track.fTrackPoints.GetX()>>profZ","abs(abs(Cl.fZ)-abs(Track.fTrackPoints.GetZ()))<1&&Track.fTrackPoints.fTX>10"+cut0,"prof");
profA->SetXTitle("Local X (cm)");
profA->SetYTitle("Mean #Delta Z (cm)");
TLegend *legend = new TLegend(0.55,0.25,0.85,0.30, description);
}
TProfile * ProfileMaxRow(TCut cut0, char *name, Int_t max){
- //
- // make profile histrogram of amplitudes
- //
+ /// make profile histrogram of amplitudes
+
TProfile *profA = new TProfile(name,name,max,0,max-1);
char expr[100];
sprintf(expr,"Cl.fMax:Cl.fRow>>%s",name);
- comp.fTree->Draw(expr,"Cl.fZ>0&&Cl.fMax<500"+cut0,"prof");
+ comp.fTree->Draw(expr,"abs(Cl.fZ)>0&&Cl.fMax<500"+cut0,"prof");
profA->SetXTitle("Pad Row");
profA->SetYTitle("Amplitude at maxima (ADC)");
return profA;
}
TProfile * ProfileMaxPhi(TCut cut0, char *name, Int_t max){
- //
- // make profile histrogram of amplitudes
- //
+ /// make profile histrogram of amplitudes
+
TProfile *profA = new TProfile(name,name,max,-0.14,0.14);
char expr[100];
sprintf(expr,"Cl.fMax:Cl.fY/Cl.fX>>%s",name);
- comp.fTree->Draw(expr,"Cl.fZ>0&&Cl.fMax<500"+cut0,"prof");
+ comp.fTree->Draw(expr,"abs(Cl.fZ)>0&&Cl.fMax<500"+cut0,"prof");
profA->SetXTitle("Local #phi(rad)");
profA->SetYTitle("Amplitude at maxima (ADC)");
- return profA;
+ return profA;
}
TProfile * ProfileQRow(TCut cut0, char *name, Int_t max){
- //
- // make profile histrogram of amplitudes
- //
+ /// make profile histrogram of amplitudes
+
TProfile *profA = new TProfile(name,name,max,0,max-1);
char expr[100];
sprintf(expr,"Cl.fQ:Cl.fRow>>%s",name);
- comp.fTree->Draw(expr,"Cl.fZ>0&&Cl.fMax<500"+cut0,"prof");
+ comp.fTree->Draw(expr,"abs(Cl.fZ)>0&&Cl.fMax<500"+cut0,"prof");
profA->SetXTitle("Pad Row");
profA->SetYTitle("Total charge(ADC)");
return profA;
}
TProfile * ProfileQPhi(TCut cut0, char *name, Int_t max){
- //
- // make profile histrogram of amplitudes
- //
+ /// make profile histrogram of amplitudes
+
TProfile *profA = new TProfile(name,name,max,-0.14,0.14);
char expr[100];
sprintf(expr,"Cl.fQ:Cl.fY/Cl.fX>>%s",name);
- comp.fTree->Draw(expr,"Cl.fZ>0&&Cl.fMax<500"+cut0,"prof");
+ comp.fTree->Draw(expr,"abs(Cl.fZ)>0&&Cl.fMax<500"+cut0,"prof");
profA->SetXTitle("Local #phi(rad)");
profA->SetYTitle("Total charge (ADC)");
return profA;
}
TProfile * ProfileQZ(TCut cut0, char *name, Int_t max){
- //
- // make profile histrogram of amplitudes
- //
+ /// make profile histrogram of amplitudes
+
TF1 * fline = new TF1("fline","[0]+[1]*[0]*(250-x)");
TF1 * f1 = new TF1("f1","[0]*exp(-[1]*(250-x))");
TProfile *profA = new TProfile(name,name,max,0,250);
char expr[100];
- sprintf(expr,"Cl.fQ:Cl.fZ>>%s",name);
- comp.fTree->Draw(expr,"Cl.fZ>0&&Cl.fMax<500"+cut0,"prof");
+ sprintf(expr,"Cl.fQ:abs(Cl.fZ)>>%s",name);
+ comp.fTree->Draw(expr,"abs(Cl.fZ)>0&&Cl.fMax<500"+cut0,"prof");
profA->SetXTitle("Z position (cm)");
profA->SetYTitle("Amplitude (ADC)");
char chc[100];
}
TProfile * ProfileMaxZ(TCut cut0, char *name, Int_t max){
- //
- // make profile histrogram of amplitudes
- //
+ /// make profile histrogram of amplitudes
+
TF1 * f1 = new TF1("f1","[0]+[1]*[0]*(250-x)");
TProfile *profA = new TProfile(name,name,max,0,250);
char expr[100];
- sprintf(expr,"Cl.fMax:Cl.fZ>>%s",name);
- comp.fTree->Draw(expr,"Cl.fZ>0&&Cl.fMax<500"+cut0,"prof");
+ sprintf(expr,"Cl.fMax:abs(Cl.fZ)>>%s",name);
+ comp.fTree->Draw(expr,"abs(Cl.fZ)>0&&Cl.fMax<500"+cut0,"prof");
profA->SetXTitle("Z position (cm)");
profA->SetYTitle("Amplitude at maxima (ADC)");
char chc[100];
void P3Z(TCut cut0, TCut cut1, char * description){
- //
- // first exponenent as function of z drift
- //
+ /// first exponenent as function of z drift
+
TF1 * f1 = new TF1("fdiff","[0]+[1]/[0]*x");
f1->SetParameter(1,0.2);
f1->SetParameter(0,0.2);
void P5Z(TCut cut0, TCut cut1, char * description){
- //
- // second exponenent as function of z drift
- //
+ /// second exponenent as function of z drift
+
TF1 * f1 = new TF1("fdiff","[0]+[1]/[0]*x");
f1->SetParameter(1,0.2);
f1->SetParameter(0,0.2);
}
TCanvas * NoiseSector(TCut cut0, char * description, Int_t maxrow, Int_t maxpad){
- //
- // draw plots of the noise
- //
+ /// draw plots of the noise
+
TCanvas * c = new TCanvas;
c->Divide(2,1);
c->Draw();