// Create ESDs histograms in ESDs subdir
//
- const Int_t kNhist = 36+5;
+ const Int_t kNhist = 36+5+4;
TH1 *hist[kNhist];
Int_t histoCounter = -1 ;
hist[36+i] = new TH1D(Form("qaTRD_esd_pid%d",i),
Form("%s;probability",partType[i]), 100, 0, 1);
+ // dE/dX vs momentum in three regions
+ const char *zoneName[4] = {"total charge", "ampilification range", "plateau", "TR range"};
+
+ // prepare the scale from 0.1 to 10 GeV
+ Double_t scalex[101];
+ Double_t dd = (TMath::Log(10) - TMath::Log(0.5)) / 100.;
+ for(Int_t ix=0; ix<101; ix++) {
+ scalex[ix] = 0.5 * TMath::Exp(dd * ix);
+ }
+
+ Double_t scaley[101];
+ for(Int_t iy=0; iy<101; iy++) {
+ scaley[iy] = iy * (3e3/100.);
+ }
+
+
+ for(Int_t i=0; i<4; i++) {
+ hist[41+i] = new TH2D(Form("qaTRD_esd_signalPzone_%d",i),
+ Form("%s;momentum (GeV/c);singal (a.u.)", zoneName[i]),
+ 100, scalex, 100, scaley);
+ }
for(Int_t i=0; i<kNhist; i++) {
//hist[i]->Sumw2();
GetESDsData(30)->Fill(track->GetTRDTimBin(0));
GetESDsData(31)->Fill(track->GetTRDpidQuality());
+
+ // dedx
+ for(Int_t i=0; i<4; i++) {
+ Double_t dedx = 0;
+ for(Int_t j=0; j<6; j++) {
+ dedx += track->GetTRDsignals(j, i-1);
+ }
+ GetESDsData(41+i)->Fill(paramOut->GetP(), dedx/6.);
+ }
+
// probabilities
if (status & AliESDtrack::kTRDpid) {
for(Int_t i=0; i<AliPID::kSPECIES; i++)
* *\r
* Permission to use, copy, modify and distribute this software and its *\r
* documentation strictly for non-commercial purposes is hereby granted *\r
- * withount fee, provided that the abovÃ\85ÂÂ\9be copyright notice appears in all *\r
+ * withount fee, provided that the abov copyright notice appears in all *\r
* copies and that both the copyright notice and this permission notice *\r
* appear in the supporting documentation. The authors make no claims *\r
* about the suitability of this software for any purpose. It is *\r
fChPed[i] = new TH2D(Form("ped_%d", i), "", 16, -0.5, 15.5, 144, -0.5, 143.5);\r
fChNoise[i] = new TH2D(Form("noise_%d", i), "", 16, -0.5, 15.5, 144, -0.5, 143.5);\r
fPed[i] = new TH1D(Form("pedDist_%d", i), ";pedestals (ADC counts)", 100, 5, 15);\r
- fNoise[i] = new TH1D(Form("noiseDist_%d", i), ";noise (ADC counts)", 100, 0, 5);\r
+\r
+ fNoise[i] = new TH1D(Form("noiseDist_%d", i), ";noise (ADC counts)", 100, 0, 5); \r
fSignal[i] = new TH1D(Form("signal_%d", i), ";signal (ADC counts)", 100, -0.5, 99.5);\r
+\r
fnEntriesRM[i] = new TH2D(Form("entriesRM_%d", i), ";ROB,MCM", 8, -0.5, 7.5, 16, -0.5, 15.5);\r
}\r
\r
while (data->Next()) {\r
\r
Int_t det = data->GetDet();\r
+\r
Int_t row = data->GetRow();\r
Int_t col = data->GetCol();\r
+\r
Int_t rob = data->GetROB();\r
Int_t mcm = data->GetMCM();\r
+\r
Int_t *sig = data->GetSignals();\r
nb++;\r
\r
Info("Process", "Number of events = %d", fnEvents);\r
\r
// normalize number of entries histos\r
- \r
Int_t max = 0;\r
for(Int_t i=0; i<540; i++) { \r
if (!map[i]) continue;\r
fNPoint[i]->Scale(1./fnEvents);\r
}\r
\r
+\r
for(Int_t i=0; i<540; i++) {\r
fnEntriesRM[i]->SetMaximum(fnEvents * 1.5);\r
}\r
private:
Int_t fnEvents; // number of events processed
+
TH1D *fOccupancy; // how many times is a pad present in data
TH1D *fPed[540]; // reconstructed pedestals distribution (on hist per chamber)
TH2D *fnEntriesRM[540]; // number of entries for ROB - MCM
TH1D *fnEntriesRMDist[540]; // distribtion of number of entries per ROB-MCM
- Int_t fFitType;
+ Int_t fFitType;
Double_t fMinNoise; // Minimum noise
Double_t fMaxNoise; // Maximum noise
AliTRDrawStreamTB::SetNoErrorWarning();
AliTRDrawStreamTB::SetExtraWordsFix();
AliTRDrawStreamTB::AllowCorruptedData();
-
+
AliTRDrawStreamTB *tb = new AliTRDrawStreamTB(reader);
//tb->Init();
return tb;
//
+
//const char *names[5] = {"ped", "noise", "pedDist", "noiseDist", "signal"};
const char *names[10] = {
"ped", "noise", "pedDist", "noiseDist", "signal",
AliTRDqaGuiClustersStack(TGWindow *parent);
AliTRDqaGuiClustersStack& operator = (const AliTRDqaGuiClustersStack& /*g*/) { return *this; };
AliTRDqaGuiClustersStack(const AliTRDqaGuiClustersStack &);
- ~AliTRDqaGuiClustersStack() {}
+ ~AliTRDqaGuiClustersStack() {}
+
void SetQAFile(const char *filename);
void SetSM(Int_t idxSM);
//////////////////////////////////////////////////////////////////////////////////
-const Int_t AliTRDqaGuiESDs::fgkLogList[18] = {1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0};
+const Int_t AliTRDqaGuiESDs::fgkLogList[24] = {
+ 1,1,0,0,0,0,
+ 1,1,1,1,1,1,
+ 1,1,1,0,0,0,
+ 0,0,0,0,0,0
+};
//////////////////////////////////////////////////////////////////////////////////
AliTRDqaGuiESDs::AliTRDqaGuiESDs(TGWindow *parent, Int_t page)
fNameList[15] = "tracksStack";
fNameList[16] = "electronStack";
fNameList[17] = "elRatioStack";
-
-
+
+ fNameList[18] = "signalPzone_0";
+ fNameList[19] = "signalPzone_1";
+ fNameList[20] = "signalPzone_2";
+ fNameList[21] = "signalPzone_3";
+ fNameList[22] = "";
+ fNameList[23] = "";
for(Int_t i=0; i<6; i++) {
fCanvasList[i] = new TRootEmbeddedCanvas(fNameList[i+6*fPage], this, 320, 320);
for(Int_t i=0; i<6; i++) {
fHistList[i] = 0;
}
-
}
//////////////////////////////////////////////////////////////////////////////////
for(int i=0; i<6; i++) {
fHistList[i] = (TH1D*)gDirectory->Get(Form("qaTRD_esd_%s", fNameList[i+fPage*6]));
fCanvasList[i]->GetCanvas()->cd();
- gPad->SetLogy(fgkLogList[i+6*fPage]);
- if (fHistList[i]) fHistList[i]->Draw();
+
+ if (fPage == 3) {
+ if (fHistList[i]) fHistList[i]->Draw("colz");
+ gPad->SetLogz(1);
+ gPad->SetLogx(1);
+ } else {
+ gPad->SetLogy(fgkLogList[i+6*fPage]);
+ if (fHistList[i]) fHistList[i]->Draw();
+ }
+
fCanvasList[i]->GetCanvas()->Update();
}
}
protected:
Int_t fPage; // histogram set
- const char *fNameList[18]; // list of histograms
- static const Int_t fgkLogList[18]; // flag for log scale
+ const char *fNameList[4*6]; // list of histograms
+ static const Int_t fgkLogList[4*6]; // flag for log scale
TRootEmbeddedCanvas *fCanvasList[6]; // canvas list
TH1D *fHistList[6]; // and histograms
fGESDs[0] = new AliTRDqaGuiESDs(fGTabPanel,0);
fGESDs[1] = new AliTRDqaGuiESDs(fGTabPanel,1);
fGESDs[2] = new AliTRDqaGuiESDs(fGTabPanel,2);
+ fGESDs[3] = new AliTRDqaGuiESDs(fGTabPanel,3);
fGTabPanel->AddTab("Clusters", fGDet);
fGTabPanel->AddTab("Clusters - Super Module", fGSM);
fGTabPanel->AddTab("Clusters - Stack", fGStack);
- fGTabPanel->AddTab("ESDs (1)", fGESDs[0]);
- fGTabPanel->AddTab("ESDs (2)", fGESDs[1]);
- fGTabPanel->AddTab("ESDs (3)", fGESDs[2]);
+ fGTabPanel->AddTab("ESDs (efficiency)", fGESDs[0]);
+ fGTabPanel->AddTab("ESDs (track quality)", fGESDs[1]);
+ fGTabPanel->AddTab("ESDs (PID)", fGESDs[2]);
+ fGTabPanel->AddTab("ESDs (dE/dX)", fGESDs[3]);
AddFrame(fGTabPanel);
fGESDs[0]->SetQAFile(file);
fGESDs[1]->SetQAFile(file);
fGESDs[2]->SetQAFile(file);
+ fGESDs[3]->SetQAFile(file);
}
////////////////////////////////////////////////////////////////////////////////
AliTRDqaGuiClusters *fGDet; // panel with clusers
AliTRDqaGuiClustersSM *fGSM; // panel with clusers
AliTRDqaGuiClustersStack *fGStack; // panel with clusers
- AliTRDqaGuiESDs *fGESDs[3]; // panel with ESDs
+ AliTRDqaGuiESDs *fGESDs[4]; // panel with ESDs
ClassDef(AliTRDqaGuiMain,1) //
};