.L TestAnalisys.C+
AddChains(868); // AddChains(runNumber);
Select(); // make default selection of data
+ MakePictures("pic868");
*/
#include "TFile.h"
#include "TChain.h"
#include "TString.h"
#include "TLegend.h"
+#include "TStyle.h"
#include "TCut.h"
#include "TF1.h"
#include "TProfile.h"
#include "AliTrackReference.h"
#include "AliTPCParam.h"
#include "AliDetector.h"
-#include "AliStack.h"
+#include "AliStack.h"
#include "AliGenInfo.h"
void Select(); // make default selection
+void SelectLaser(); // make default selection for laser tracks
+
void AddChains(Int_t run); // add all the trees with selected run number to the chain
void MakePictures(char *dirname); // make default pictures
//
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);
+TProfile * ProfileQRow(TCut cut0, char *name, Int_t max);
+TProfile * ProfileQPhi(TCut cut0, char *name, Int_t max);
TProfile * ProfileQZ(TCut cut0, char *name, Int_t max);
TCanvas * NoiseSector(TCut cut0, char * description, Int_t maxrow, Int_t maxpad);
//
//
//
+ // Define Uli Style
+ gROOT->SetStyle("Plain");
+ gStyle->SetFillColor(10);
+ gStyle->SetPadColor(10);
+ gStyle->SetCanvasColor(10);
+ gStyle->SetStatColor(10);
+
+ gStyle->SetPalette(1,0);
+ gStyle->SetNumberContours(50);
+ //
const Int_t kMinCl = 200;
char chshell[100];
sprintf(chshell,"mkdir %s", dirname);
c.cd();
sprintf(chdesc,"%s Sector %d IROC",runDesc.Data(), isector);
sprintf(chcut1,"Cl.fDetector==%d", isector);
- prof = ProfileMaxRow(chcut1, chdesc, 70);
+ prof = ProfileQRow(chcut1, chdesc, 70);
sprintf(chshell,"%s/qrow_sec%dIROC.eps", dirname,isector);
prof->Draw();
c.Update();
c.Print(chshell);
+ prof = ProfileMaxRow(chcut1, chdesc, 70);
+ sprintf(chshell,"%s/maxrow_sec%dIROC.eps", dirname,isector);
+ prof->Draw();
+ c.Update();
+ c.Print(chshell);
//
sprintf(chdesc,"%s Sector %d OROC",runDesc.Data(), isector);
sprintf(chcut1,"Cl.fDetector==%d", isector+36);
- prof = ProfileMaxRow(chcut1, chdesc, 100);
+ prof = ProfileQRow(chcut1, chdesc, 100);
sprintf(chshell,"%s/qrow_sec%dOROC.eps", dirname,isector);
prof->Draw();
c.Update();
c.Print(chshell);
+ prof = ProfileMaxRow(chcut1, chdesc, 100);
+ sprintf(chshell,"%s/maxrow_sec%dOROC.eps", dirname,isector);
+ prof->Draw();
+ c.Update();
+ c.Print(chshell);
//
// charge phi
//
//
// charge z
//
+ c.cd();
sprintf(chdesc,"%s Sector %d IROC",runDesc.Data(), isector);
sprintf(chcut1,"Cl.fDetector==%d", isector);
prof = ProfileQZ(chcut1, chdesc,20);
sprintf(chshell,"%s/qz_sec%dIROC.eps", dirname,isector);
- prof->Draw();
+ // prof->Draw();
c.Update();
c.Print(chshell);
//
+ c.cd();
sprintf(chdesc,"%s Sector %d OROC",runDesc.Data(), isector);
sprintf(chcut1,"Cl.fDetector==%d", isector+36);
prof = ProfileQZ(chcut1, chdesc,20);
sprintf(chshell,"%s/qz_sec%dOROC.eps", dirname,isector);
- prof->Draw();
+ //prof->Draw();
c.Update();
c.Print(chshell);
//
SysYX(chcut1,chdesc);
sprintf(chshell,"%s/deltayx_sec%d.eps", dirname,isector);
c.Print(chshell);
+ c.cd();
SysZX(chcut1,chdesc);
sprintf(chshell,"%s/deltazx_sec%d.eps", dirname,isector);
c.Print(chshell);
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());
// chainPed.Add(sfile.Data());
}
//
- // Fitted pedestal
- sprintf(strcl,"ls run%d*/TPCsignal.root > /tmp/files.txt", run);
+ // Random signals
+ 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());
TTree * tree =(TTree*)f.Get("SignalB");
if (tree){
f.Close();
- chainPed.Add(sfile.Data());
+ chainSignal.Add(sfile.Data());
}
// chainPed.Add(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());
//
// base cut on the tracks
//
- comp.fTree->Draw(">>listTracks","Track.fN>50&&abs(Track.fP4)<0.001");
+ 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");
compF.fTree->SetEventList(listFitS);
}
+void SelectLaser(){
+ //
+ // 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");
+ compF.fTree->SetEventList(listFitS);
+ //
+ // make default aliases
+ //
+ // laser z beam
+ 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){
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)","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)","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();
//
//
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()","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()","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();
//
//
//
//
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 *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 (ADC)");
+ profA->SetYTitle("Amplitude at maxima (ADC)");
return profA;
}
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 (ADC)");
+ profA->SetYTitle("Amplitude at maxima (ADC)");
+ return profA;
+}
+
+TProfile * ProfileQRow(TCut cut0, char *name, Int_t max){
+ //
+ // 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,"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
+ //
+ 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,"abs(Cl.fZ)>0&&Cl.fMax<500"+cut0,"prof");
+ profA->SetXTitle("Local #phi(rad)");
+ profA->SetYTitle("Total charge (ADC)");
return profA;
}
//
// make profile histrogram of amplitudes
//
- TF1 * f1 = new TF1("f1","[0]+[1]*[0]*(250-x)");
+ 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];
+ profA->Fit(fline);
+ f1->SetParameter(0,fline->GetParameter(0));
+ f1->SetParameter(1,fline->GetParameter(1));
+ profA->Fit(f1);
+ sprintf(chc,"Exponential fit params: p_{0} = %f p_{1} = %f",f1->GetParameter(0),f1->GetParameter(1));
+ printf("%s",chc);
+ TLegend *legend = new TLegend(0.25,0.12,0.85,0.25, chc);
+ legend->Draw();
+ return profA;
+}
+
+TProfile * ProfileMaxZ(TCut cut0, char *name, Int_t max){
+ //
+ // 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: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];
profA->Fit(f1);
sprintf(chc,"p_{0} = %f p_{1} = %f",f1->GetParameter(0),f1->GetParameter(1));
TLegend *legend = new TLegend(0.25,0.12,0.85,0.35, chc);
return c;
}
+
+