//TStopwatch watch;
//watch.Start();
- //AliInfo(Form("Fitting RecPoints %d", task))
+ AliInfo("End of TRD cycle");
if (task == AliQA::kRECPOINTS) {
Int_t sm = i/30;
Int_t det = i%30;
- TH2D *detMap = (TH2D*)list->At(51);
+ TH2D *detMap = (TH2D*)list->At(87);
Int_t bin = detMap->FindBin(sm, det);
detMap->SetBinContent(bin, v);
}
//ratio->Divide(histD);
}
}
+
+ // ratio for the fraction of electrons per stack
+ TH1D *histN = (TH1D*)list->At(33);
+ TH1D *histD = (TH1D*)list->At(32);
+ TH1D *ratio = (TH1D*)list->At(34);
+ BuildRatio(ratio, histN, histD);
}
// Create ESDs histograms in ESDs subdir
//
- const Int_t kNhist = 27;
+ const Int_t kNhist = 36+5;
+
TH1 *hist[kNhist];
Int_t histoCounter = -1 ;
hist[++histoCounter] = new TH1D(Form("qaTRD_esd_trdz%s", suf[i]), ";z (cm)", 200, -400, 400);
}
- hist[++histoCounter] = new TH1D("qaTRD_esd_clsTRDo", "TRDo;number of clusters", 130, -0.5, 129.5);;
- hist[++histoCounter] = new TH1D("qaTRD_esd_clsTRDr", "TRDr;number of clusters", 130, -0.5, 129.5);;
- hist[++histoCounter] = new TH1D("qaTRD_esd_clsTRDz", "TRDz;number of clusters", 130, -0.5, 129.5);;
+ hist[++histoCounter] = new TH1D("qaTRD_esd_clsTRDo", "TRDo;number of clusters", 180, -0.5, 179.5);;
+ hist[++histoCounter] = new TH1D("qaTRD_esd_clsTRDr", "TRDr;number of clusters", 180, -0.5, 179.5);;
+ hist[++histoCounter] = new TH1D("qaTRD_esd_clsTRDz", "TRDz;number of clusters", 180, -0.5, 179.5);;
//hist[++histoCounter] = new TH1D("qaTRD_esd_clsRatio", ";cluster ratio", 100, 0., 1.3);;
hist[++histoCounter] = new TH2D("qaTRD_esd_sigMom", ";momentum (GeV/c);signal", 100, 0, 5, 200, 0, 1e3);
200, -400, 400);
}
- for(Int_t i=0; i<=histoCounter; i++) {
+ // 27 - 31
+ hist[27] = new TH1D("qaTRD_esd_quality", ";quality", 120, 0, 12);
+ hist[28] = new TH1D("qaTRD_esd_budget", ";NN", 110, -1000, 100);
+ hist[29] = new TH1D("qaTRD_esd_chi2", ";chi2", 200, 0, 100);
+ hist[30] = new TH1D("qaTRD_esd_timeBin", ";time bin", 7, -0.5, 6.5);
+ hist[31] = new TH1D("qaTRD_esd_pidQuality", "pid Quality", 7, -0.5, 6.5);
+
+ // stack by stack electron identyfication
+ hist[32] = new TH1D("qaTRD_esd_tracksStack", "number of all tracks;stack", 90, -0.5, 89.5);
+ hist[33] = new TH1D("qaTRD_esd_electronStack", "number of electron tracks;stack", 90, -0.5, 89.5);
+ hist[34] = new TH1D("qaTRD_esd_elRatioStack", "fraction of electron tracks;stack", 90, -0.5, 89.5);
+ hist[35] = new TH1D("qaTRD_esd_thetaOut", ";tan(theta);", 100, -1, 1);
+
+ const char *partType[5] = {"Electron", "Muon", "Pion", "Kaon", "Proton"};
+
+ for(Int_t i=0; i<AliPID::kSPECIES; i++)
+ hist[36+i] = new TH1D(Form("qaTRD_esd_pid%d",i),
+ Form("%s;probability",partType[i]), 100, 0, 1);
+
+
+ for(Int_t i=0; i<kNhist; i++) {
//hist[i]->Sumw2();
Add2ESDsList(hist[i], i);
}
// Create Reconstructed Points histograms in RecPoints subdir
//
- const Int_t kNhist = 14 + 18 + 18 + 2;
+ const Int_t kNhist = 14 + 4 * 18 + 2;
TH1 *hist[kNhist];
hist[0] = new TH1D("qaTRD_recPoints_det", ";Detector ID of the cluster", 540, -0.5, 539.5);
hist[9] = new TH1D("qaTRD_recPoints_nCls", ";number of clusters", 500, -0.5, 499.5);
hist[10] = new TH3D("qaTRD_recPoints_sigTime", ";chamber;time bin;signal",
- 540, -0.5, 539.5, 35, -0.5, 34.5, 100, 0, 200);
+ 540, -0.5, 539.5, 35, -0.5, 34.5, 200, -0.5, 199.5);
hist[11] = new TProfile("qaTRD_recPoints_prf", ";distance;center of gravity"
, 120, -0.6, 0.6, -1.2, 1.2, "");
hist[12] = new TH1D("qaTRD_recPoints_ampMPV", ";amplitude MPV", 200, 0, 200);
hist[13] = new TH1D("qaTRD_recPoints_ampSigma", ";amplitude Sigma", 200, 0, 200);
- // chamber bu chamber
+ // chamber by chamber
for(Int_t i=0; i<18; i++) {
hist[14+i] = new TH2D(Form("qaTRD_recPoints_sigTime_sm%d",i), Form("sm%d;det;time bin"),
30, -0.5, 29.5, 35, -0.5, 34.5);
hist[14+18+i] = new TH1D(Form("qaTRD_recPoints_sigTimeShape_sm%d", i),
Form("sm%d;time bin;signal"),
35, -0.5, 34.5);
-
+
hist[14+18+i]->SetMaximum(120);
}
- hist[50] = new TH1D("qaTRD_recPoints_signal", ";amplitude", 200, -0.5, 199.5);
- hist[51] = new TH2D("qaTRD_recPoints_detMap", ";sm;chamber", 18, -0.5, 17.5, 30, -0.5, 29.5);
+ // str = 50
+ for(Int_t i=0; i<18; i++) {
+ hist[50+i] = new TH1D(Form("qaTRD_recPoints_nCls_sm%d",i),
+ Form("sm%d;time bin;number of clusters",i),
+ 35, -0.5, 34.5);
+ }
+
+ // str = 68
+ for(Int_t i=0; i<18; i++) {
+ hist[68+i] = new TH1D(Form("qaTRD_recPoints_totalCharge_sm%d", i),
+ Form("sm%d;time bin;total charge", i),
+ 35, -0.5, 34.5);
+ }
+
+ hist[86] = new TH1D("qaTRD_recPoints_signal", ";amplitude", 200, -0.5, 199.5);
+ hist[87] = new TH2D("qaTRD_recPoints_detMap", ";sm;chamber", 18, -0.5, 17.5, 30, -0.5, 29.5);
for(Int_t i=0; i<kNhist; i++) {
//hist[i]->Sumw2();
Add2RecPointsList(hist[i], i);
}
-
}
//____________________________________________________________________________
// .. in the acceptance
Int_t sector = GetSector(paramOut->GetAlpha());
- GetESDsData(1)->Fill(sector);
+ Int_t stack = GetStack(paramOut);
UInt_t u = 1;
UInt_t status = track->GetStatus();
// clusters
for(Int_t b=0; b<3; b++)
- if (bit[3+b]) GetESDsData(b+15)->Fill(track->GetTRDncls());
+ if (bit[3+b]) GetESDsData(b+15)->Fill(track->GetTRDncls0());
// refitted only
if (!bit[4]) continue;
//fQuality->Fill(track->GetTRDQuality());
//fBudget->Fill(track->GetTRDBudget());
//fSignal->Fill(track->GetTRDsignal());
-
+
+ GetESDsData(1)->Fill(sector);
GetESDsData(18)->Fill(track->GetP(), track->GetTRDsignal());
+ GetESDsData(27)->Fill(track->GetTRDQuality());
+ GetESDsData(28)->Fill(track->GetTRDBudget());
+ GetESDsData(29)->Fill(track->GetTRDchi2());
+ GetESDsData(30)->Fill(track->GetTRDTimBin(0));
+ GetESDsData(31)->Fill(track->GetTRDpidQuality());
+
+ // probabilities
+ if (status & AliESDtrack::kTRDpid) {
+ for(Int_t i=0; i<AliPID::kSPECIES; i++)
+ GetESDsData(36+i)->Fill(track->GetTRDpid(i));
+ }
+
+ // probabilities uniformity
+ if (track->GetTRDpidQuality() < 6) continue;
+ GetESDsData(35)->Fill(paramOut->GetZ()/paramOut->GetX());
+
+ Int_t idx = 5 * sector + stack;
+ GetESDsData(32)->Fill(idx); // all tracks
+ if (track->GetTRDpid(AliPID::kElectron) > 0.9)
+ GetESDsData(33)->Fill(idx); // electrons only
+
+
+
+ /*
+ hist[27] = new TH1D("qaTRD_esd_quality", ";quality", 120, 0, 12);
+ hist[28] = new TH1D("qaTRD_esd_budget", ";NN", 110, -1000, 100);
+ hist[29] = new TH1D("qaTRD_esd_chi2", ";chi2", 300, 0, 100);
+ hist[30] = new TH1D("qaTRD_esd_timeBin", 7, -0.5, 6.5);
+ hist[31] = new TH1D("qaTRD_esd_pidQuality", 7, -0.5, 6.5);
+ */
+
/*
// PID only
if (status & AliESDtrack::kTRDpid) {
}
//______________________________________________________________________________
-Int_t AliTRDQADataMakerRec::GetSector(const Double_t alpha) const
+Int_t AliTRDQADataMakerRec::GetSector(Double_t alpha) const
{
//
// Gets the sector number
//
Double_t size = TMath::DegToRad() * 20.; // shall use TRDgeo
- Int_t sector = (Int_t)((alpha + TMath::Pi())/size);
+ if (alpha < 0) alpha += 2*TMath::Pi();
+ Int_t sector = (Int_t)(alpha/size);
return sector;
}
+//______________________________________________________________________________
+
+Int_t AliTRDQADataMakerRec::GetStack(const AliExternalTrackParam *paramOut) const
+{
+ //
+ // calculates the stack the track is in
+ //
+
+ const Double_t L = -0.9;
+ const Double_t W = (2*L)/5;
+
+ Double_t tan = paramOut->GetZ() / paramOut->GetX();
+ Double_t pos = (tan - L) / W;
+ return (Int_t) pos;
+}
//______________________________________________________________________________
Double_t AliTRDQADataMakerRec::GetExtZ(const AliExternalTrackParam *in) const
GetRawsData(3)->Fill(sm);
GetRawsData(4+sm)->Fill(index);
}
+
+ delete raw;
}
//____________________________________________________________________________
Int_t iDet = c->GetDetector();
nDet[iDet]++;
GetRecPointsData(0)->Fill(iDet);
- GetRecPointsData(50)->Fill(c->GetQ());
+ GetRecPointsData(86)->Fill(c->GetQ());
GetRecPointsData(1)->Fill(iDet, c->GetQ());
GetRecPointsData(2)->Fill(c->GetNPads());
if (c->GetNPads() < 6)
GetRecPointsData(8)->Fill(c->GetPadTime());
((TH3D*)GetRecPointsData(10))->Fill(iDet, c->GetPadTime(), c->GetQ());
+
+ Int_t iSM = iDet / 30;
+ GetRecPointsData(50+iSM)->Fill(c->GetPadTime());
+ GetRecPointsData(68+iSM)->Fill(c->GetPadTime(), c->GetQ());
// PRF for 2pad
//if (c->GetNPads() == 2) {
Int_t CheckPointer(TObject *obj, const char *name);
// internal methods
- Int_t GetSector(const Double_t alpha) const;
+ Int_t GetSector(Double_t alpha) const;
+ Int_t GetStack(const AliExternalTrackParam *paramOut) const;
Double_t GetExtZ(const AliExternalTrackParam *paramIn) const;
+
void BuildRatio(TH1D *ratio, TH1D *histN, TH1D *histD);
ClassDef(AliTRDQADataMakerRec,1) // Creates the TRD QA data
* *\r
* Permission to use, copy, modify and distribute this software and its *\r
* documentation strictly for non-commercial purposes is hereby granted *\r
- * without fee, provided that the abovĂ…\9be copyright notice appears in all *\r
+ * withount fee, provided that the abovĂ…\9be 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
:TObject() \r
,fMinNoise(0.5)\r
,fMaxNoise(2) \r
+ ,fFitType(0)\r
+ ,fnEvents(0)\r
{\r
//\r
// Constructor \r
:TObject(qa) \r
,fMinNoise(0.5)\r
,fMaxNoise(2) \r
+ ,fFitType(0)\r
+ ,fnEvents(0)\r
{\r
//\r
// Copy constructor \r
//TFile *file = new \r
//Info("Init", "Statring");\r
\r
+ fnEvents = 0;\r
+\r
for(Int_t i=0; i<540; i++) {\r
+ fNPoint[i] = new TH2D(Form("entries_%d", i), "", 16, -0.5, 15.5, 144, -0.5, 143.5);\r
fData[i] = new TH3D(Form("data_%d", i), "", 16, -0.5, 15.5, 144, -0.5, 143.5, 50, -0.5, 49.5);\r
- fChPed[i] = new TH2D(Form("ped_%d", i), "", 16, -0.5, 15.5, 150, -0.5, 149.5);\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", 100, 0, 20);\r
- fNoise[i] = new TH1D(Form("noiseDist_%d", i), ";noise", 100, 0, 5); \r
- fSignal[i] = new TH1D(Form("signal_%d", i), "", 100, -0.5, 99.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
+ fSignal[i] = new TH1D(Form("signal_%d", i), "signal (ADC counts)", 100, -0.5, 99.5);\r
}\r
\r
+ fOccupancy = new TH1D("occupancy", "", 20, -0.5, 19.5);\r
+\r
//Info("Init", "Done");\r
}\r
\r
// Add an event\r
//\r
\r
+ \r
+ Char_t isUsed[540][16][144]; \r
+ for(Int_t i=0; i<540; i++)\r
+ for(Int_t j=0; j<16; j++)\r
+ for(Int_t k=0; k<144; k++)\r
+ isUsed[i][j][k] = 0;\r
+ \r
Int_t nb = 0;\r
while (data->Next()) {\r
\r
Int_t det = data->GetDet();\r
+ Int_t row = data->GetRow();\r
+ Int_t col = data->GetCol();\r
Int_t *sig = data->GetSignals();\r
nb++;\r
\r
+ //printf("det = %d\n", det);\r
+ \r
if (det<0 || det>=540) continue;\r
+ isUsed[det][row][col]++;\r
+\r
+ // if (!isUsed[det][data->GetRow()][data->GetCol()]) {\r
+ // isUsed[det][data->GetRow()][data->GetCol()] = 1;\r
+ // continue;\r
+ // }\r
+\r
+ fNPoint[det]->Fill(row, col);\r
\r
- for(Int_t k=0; k<30; k++) {\r
+ for(Int_t k=0; k<30; k++) { /// to be corrected\r
fSignal[det]->Fill(sig[k]);\r
- //if(sig[k]>13) printf("timebin: %d signal: %d\n",k,sig[k]); \r
- fData[det]->Fill(data->GetRow(), data->GetCol(), sig[k]);\r
+ fData[det]->Fill(row, col, sig[k]);\r
}\r
}\r
+ \r
+ for(Int_t i=0; i<540; i++) {\r
+ if (i != 0 && i != 8) continue;\r
+ for(Int_t j=0; j<16; j++)\r
+ for(Int_t k=0; k<144; k++)\r
+ fOccupancy->Fill(isUsed[i][j][k]);\r
+ }\r
\r
+ \r
+ fnEvents++;\r
return nb;\r
}\r
\r
fit->SetParameters(1e3, 10, 1);\r
\r
for(Int_t i=0; i<540; i++) {\r
- \r
+ \r
map[i] = 0;\r
- if (fData[i]->GetSum() < 100) continue;\r
+ if (fData[i]->GetSum() < 10) continue;\r
map[i] = 1;\r
\r
Info("process", "processing chamber %d", i);\r
\r
Int_t bin = fChPed[i]->FindBin(j, k);\r
\r
- if (hist->GetSum() > 10) {\r
- hist->Fit(fit, "q0", "goff", 0, 20);\r
- TF1 *f = hist->GetFunction("fit");\r
- Double_t ped = TMath::Abs(f->GetParameter(1));\r
- Double_t noise = TMath::Abs(f->GetParameter(2));\r
+ if (hist->GetSum() > 1) {\r
+ \r
+ Double_t ped = 0, noise = 0;\r
+\r
+ if (fFitType == 0) {\r
+ fit->SetParameters(1e3, 10, 1);\r
+ hist->Fit(fit, "q0", "goff", 0, 20);\r
+ TF1 *f = hist->GetFunction("fit");\r
+ ped = TMath::Abs(f->GetParameter(1));\r
+ noise = TMath::Abs(f->GetParameter(2));\r
+ } else {\r
+ ped = hist->GetMean();\r
+ noise = hist->GetRMS();\r
+ }\r
\r
fChPed[i]->SetBinContent(bin, ped);\r
fChNoise[i]->SetBinContent(bin, noise);\r
fNoise[i]->Fill(noise);\r
\r
} else {\r
- fChPed[i]->SetBinContent(bin, 10);\r
- fChNoise[i]->SetBinContent(bin, 1);\r
+ fChPed[i]->SetBinContent(bin, 0);\r
+ fChNoise[i]->SetBinContent(bin, 0);\r
}\r
\r
//delete hist;\r
}\r
}\r
\r
+ // normalize number of entries histos\r
+\r
+ \r
+ Int_t max = 0;\r
+ for(Int_t i=0; i<540; i++) { \r
+ if (!map[i]) continue;\r
+ for(Int_t j=0; j<fNPoint[i]->GetXaxis()->GetNbins(); j++) {\r
+ for(Int_t k=0; k<fNPoint[i]->GetYaxis()->GetNbins(); k++) {\r
+ Int_t dataBin = fNPoint[i]->FindBin(j, k);\r
+ Double_t v = fNPoint[i]->GetBinContent(dataBin);\r
+ if (v > max) max = (Int_t)v;\r
+ }\r
+ }\r
+ }\r
+ \r
+ for(Int_t i=0; i<540; i++) {\r
+ \r
+ if (!map[i]) continue;\r
+ \r
+ fNPointDist[i] = new TH1D(Form("entriesDist_%d", i), ";number of events", max+2, -0.5, max+1.5);\r
+ \r
+ for(Int_t j=0; j<fNPoint[i]->GetXaxis()->GetNbins(); j++) {\r
+ for(Int_t k=0; k<fNPoint[i]->GetYaxis()->GetNbins(); k++) {\r
+ Int_t dataBin = fNPoint[i]->FindBin(j, k);\r
+ Double_t v = fNPoint[i]->GetBinContent(dataBin);\r
+ //if (v > fnEvents) printf("N = %d V = %lf\n", fnEvents, v);\r
+ fNPointDist[i]->Fill(v); \r
+ }\r
+ }\r
+ \r
+ fNPoint[i]->Scale(1./fnEvents);\r
+ }\r
+ \r
+ \r
TFile *file = new TFile(filename, "UPDATE");\r
for(Int_t i=0; i<540; i++) {\r
if (!map[i]) continue; \r
fChPed[i]->Write();\r
fChNoise[i]->Write();\r
+ fNPoint[i]->Write();\r
+ fNPointDist[i]->Write();\r
fPed[i]->Write();\r
fNoise[i]->Write();\r
fSignal[i]->Write();\r
}\r
+ fOccupancy->Write();\r
file->Close();\r
delete file;\r
}\r
TH2D *GetChamberNoise(Int_t det) {return fChNoise[det];}
void SetNoiseLevel(Double_t min, Double_t max) {fMinNoise = min; fMaxNoise = max;}
+ void SetFitMethod(Int_t fit) {fFitType = fit;}
void DrawChamber(const char *filename, Int_t det, Int_t w=700, Int_t h=400);
//void ScanChamber(const char *filename, Int_t first, Int_t last);
void DrawSm(const char *filename, Int_t sm, Int_t w=900, Int_t h=700);
private:
+
+ Int_t fnEvents; // number of events processed
+
+ TH1D *fOccupancy; // how many times is a pad present in data
- TH1D *fPed[540]; // Some histograms
- TH1D *fNoise[540]; // Some histograms
- TH2D *fChPed[540]; // Some histograms
- TH2D *fChNoise[540]; // Some histograms
- TH3D *fData[540]; // Some histograms
- TH1D *fSignal[540]; // Some histograms
+ TH1D *fPed[540]; // reconstructed pedestals distribution (on hist per chamber)
+ TH1D *fNoise[540]; // reconstructed noise distribution (on hist per chamber)
+ TH1D *fNPointDist[540]; // distributin of the number of points
+ TH2D *fChPed[540]; // Some histograms
+ TH2D *fChNoise[540]; // Some histograms
+ TH2D *fNPoint[540]; // number of data points
+ TH3D *fData[540]; // Some histograms
+ TH1D *fSignal[540]; // Some histograms
+ Int_t fFitType;
Double_t fMinNoise; // Minimum noise
Double_t fMaxNoise; // Maximum noise
//////////////////////////////////////////////////////////////////////////////////
AliTRDqaGuiBlackChamber::AliTRDqaGuiBlackChamber()
- : fSetRangePed(0),
+ : fView(0),
+ fSetRangePed(0),
fSetRangeNoise(0),
fIdxSM(0),
fIdxChamber(0),
//////////////////////////////////////////////////////////////////////////////////
-AliTRDqaGuiBlackChamber::AliTRDqaGuiBlackChamber(TGWindow *parent)
+AliTRDqaGuiBlackChamber::AliTRDqaGuiBlackChamber(TGWindow *parent)
: TGCompositeFrame(parent, 720, 500),
+ fView(0),
fSetRangePed(0),
fSetRangeNoise(0),
fIdxSM(0),
// main constructor
//
- // steering panel
+ // steering panel
SetLayoutManager(new TGVerticalLayout(this));
-
fGPanel = new TGHorizontalFrame(this);
// fGLabel = new TGLabel(fGPanel, "Current Chamber: ");
fGSelectChamber->Resize(100, fGPrevSM->GetHeight());
fGSelectChamber->Select(fIdxChamber);
+ // vew
+ fGSelectView = new TGComboBox(fGPanel);
+ fGSelectView->AddEntry("pedestals",0);
+ fGSelectView->AddEntry("entiries", 1);
+ fGSelectView->Resize(150, fGPrevSM->GetHeight());
+ fGSelectView->Select(0);
+
+
//fGPlay = new TGTextButton(fGPanel, "PLAY");
TGLayoutHints *hint = new TGLayoutHints(kLHintsNormal, 5, 5, 5, 5);
fGPanel->AddFrame(fGNextChamber, hint);
fGPanel->AddFrame(fGNextSM, hint);
+ fGPanel->AddFrame(fGSelectView, hint);
//fGPanel->AddFrame(fGPlay, hint);
AddFrame(fGPanel);
fGSelectSM->Connect("Selected(Int_t)", "AliTRDqaGuiBlackChamber", this, "SelectSM(Int_t)");
fGSelectChamber->Connect("Selected(Int_t)", "AliTRDqaGuiBlackChamber", this, "SelectChamber(Int_t)");
+ fGSelectView->Connect("Selected(Int_t)", "AliTRDqaGuiBlackChamber", this, "SelectView(Int_t)");
+
//fGPlay->Connect("Clicked()", "AliTRDqaGuiBlackChamber", this, "Play()");
// histograms
//
- const char *names[5] = {"ped", "noise", "pedDist", "noiseDist", "signal"};
- const char *opt[5] = {"colz", "colz", "", "", ""};
- const Int_t kLogy[5] = {0, 0, 1, 1, 0};
+ //const char *names[5] = {"ped", "noise", "pedDist", "noiseDist", "signal"};
+ const char *names[10] = {
+ "ped", "noise", "pedDist", "noiseDist", "signal",
+ "entries", "", "entriesDist", "", ""
+ };
+ const char *opt[10] = {"colz", "colz", "", "", "", "colz", "colz", "", "", ""};
+ const Int_t kLogy[10] = {0, 0, 1, 1, 1, 0, 0, 1, 1,1};
strcpy(fFileName, filename);
for(Int_t i=0; i<5; i++) {
Int_t index = fIdxSM * 30 + fIdxChamber;
- const char *nn = Form("%s_%d", names[i], index);
+ const char *nn = Form("%s_%d", names[i+5*fView], index);
//printf("%s\n", nn);
fHistList[i] = (TH1*)file->Get(nn); //Form("%s_$d", names[fIdxType], index));
if (!fHistList[i]) continue;
-
- if ( (i == 0) && fSetRangePed) {
+
+ if ( (fView == 1) && (i == 0)) {
+ fHistList[i]->SetMinimum(0);
+ fHistList[i]->SetMaximum(2);
+ }
+
+ if ( (fView == 0) && (i == 0) && fSetRangePed) {
fHistList[i]->SetMinimum(fRangePed[0]);
fHistList[i]->SetMaximum(fRangePed[1]);
}
- if ( (i == 1) && fSetRangeNoise) {
+ if ( (fView == 0) && (i == 1) && fSetRangeNoise) {
fHistList[i]->SetMinimum(fRangeNoise[0]);
fHistList[i]->SetMaximum(fRangeNoise[1]);
}
fCanvasList[i]->GetCanvas()->cd();
- fCanvasList[i]->GetCanvas()->SetLogy(kLogy[i]);
- if (fHistList[i]) fHistList[i]->Draw(opt[i]);
- fCanvasList[i]->GetCanvas()->Update();
+ fCanvasList[i]->GetCanvas()->SetLogy(kLogy[i+5*fView]);
+ if (fHistList[i]) fHistList[i]->Draw(opt[i+5*fView]);
+ //fCanvasList[i]->GetCanvas()->Update();
}
+
+ for(Int_t i=0; i<5; i++)
+ fCanvasList[i]->GetCanvas()->Update();
}
//////////////////////////////////////////////////////////////////////////////////
}
//////////////////////////////////////////////////////////////////////////////////
+
+void AliTRDqaGuiBlackChamber::SetView(Int_t idxView) {
+ //
+ // sets active view
+ //
+
+ fView = idxView;
+ fGSelectView->Select(idxView);
+ SetQAFile(fFileName);
+}
+//////////////////////////////////////////////////////////////////////////////////
void SetQAFile(const char *filename);
void SetSM(Int_t idxSM);
void SetChamber(Int_t idxChamber);
+ void SetView(Int_t idxView);
void SetRangePed(Double_t min, Double_t max) {
fSetRangePed = 1;
void SelectChamber(Int_t idx) {SetChamber(idx);} // *SLOT*
void SelectSM(Int_t idx) {SetSM(idx);} // *SLOT*
- // void SelectView(Int_t idx) {SetView(idx);} // *SLOT*
+ void SelectView(Int_t idx) {SetView(idx);} // *SLOT*
protected:
+ Int_t fView;
+
static const Int_t fgknSM; // number of supermodules
static const Int_t fgknChamber; // number of chamberd (30)
// steering panel
// TGLabel *fGLabel;
TGComboBox *fGSelectSM; // selector for Super Module
- TGComboBox *fGSelectChamber; // selectro for Chamber
- //TGComboBox *fGSelectView;
+ TGComboBox *fGSelectChamber; // selector for Chamber
+ TGComboBox *fGSelectView; // select view
TGTextButton *fGPrevSM; // button
TGTextButton *fGPrevChamber; // button
fGSelect->Resize(100, fGPrev->GetHeight());
fGSelect->Select(fIdx,0);
- const char *textTypes[5] = {
- "pedestals", "noise", "pedestalDist", "noiseDist", "signal"
+ const char *textTypes[7] = {
+ "pedestals", "noise", "pedestalDist", "noiseDist", "signal", "entries", "entriesDist"
};
fGSelectType = new TGComboBox(fGPanel);
- for(int i=0; i<5; i++) fGSelectType->AddEntry(textTypes[i], i);
+ for(int i=0; i<7; i++) fGSelectType->AddEntry(textTypes[i], i);
fGSelectType->Resize(100, fGPrev->GetHeight());
fGSelectType->Select(fIdxType, 0);
// Set the file with histograms
//
- const char *names[5] = {"ped", "noise", "pedDist", "noiseDist", "signal"};
- const char *opt[5] = {"col", "col", "", "", ""};
- const Int_t kLogy[5] = {0, 0, 1, 1, 0};
+ const char *names[7] = {"ped", "noise", "pedDist", "noiseDist", "signal", "entries", "entriesDist"};
+ const char *opt[7] = {"col", "col", "", "", "", "colz", ""};
+ const Int_t kLogy[7] = {0, 0, 1, 1, 1, 0, 1};
fFileName = filename;
if (fHistList[i]) fHistList[i]->Draw(opt[fIdxType]);
+ if (fHistList[i] && (fIdxType == 5)) {
+ fHistList[i]->SetMinimum(0);
+ fHistList[i]->SetMaximum(2);
+ }
+
if ( fHistList[i] && (fIdxType == 0) && fSetRangePed) {
fHistList[i]->SetMinimum(fRangePed[0]);
fHistList[i]->SetMaximum(fRangePed[1]);
//////////////////////////////////////////////////////////////////////////////////
-const Int_t AliTRDqaGuiESDs::fgkLogList[12] = {1,1,0,0,0,0,1,1,1,1,1,1};
+const Int_t AliTRDqaGuiESDs::fgkLogList[18] = {1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0};
//////////////////////////////////////////////////////////////////////////////////
AliTRDqaGuiESDs::AliTRDqaGuiESDs(TGWindow *parent, Int_t page)
fNameList[10] = "pidQuality";
fNameList[11] = "chi2";
+ fNameList[12] = "pid0";
+ fNameList[13] = "pid2";
+ fNameList[14] = "pid4";
+ fNameList[15] = "tracksStack";
+ fNameList[16] = "electronStack";
+ fNameList[17] = "elRatioStack";
+
+
for(Int_t i=0; i<6; i++) {
- fCanvasList[i] = new TRootEmbeddedCanvas(fNameList[i], this, 320, 320);
+ fCanvasList[i] = new TRootEmbeddedCanvas(fNameList[i+6*fPage], this, 320, 320);
AddFrame(fCanvasList[i]);
fCanvasList[i]->GetCanvas()->SetRightMargin(0.05);
//TGToolTip *tip = new TGToolTip(this,fCanvasList[i], Form("Wal sie na ryja %d", i),1000);
protected:
Int_t fPage; // histogram set
- const char *fNameList[12]; // list of histograms
- static const Int_t fgkLogList[12]; // flag for log scale
+ const char *fNameList[18]; // list of histograms
+ static const Int_t fgkLogList[18]; // flag for log scale
TRootEmbeddedCanvas *fCanvasList[6]; // canvas list
TH1D *fHistList[6]; // and histograms
fGStack = new AliTRDqaGuiClustersStack(fGTabPanel);
fGESDs[0] = new AliTRDqaGuiESDs(fGTabPanel,0);
fGESDs[1] = new AliTRDqaGuiESDs(fGTabPanel,1);
+ fGESDs[2] = new AliTRDqaGuiESDs(fGTabPanel,2);
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]);
AddFrame(fGTabPanel);
fGStack->SetQAFile(file);
fGESDs[0]->SetQAFile(file);
fGESDs[1]->SetQAFile(file);
+ fGESDs[2]->SetQAFile(file);
}
////////////////////////////////////////////////////////////////////////////////
AliTRDqaGuiClusters *fGDet; // panel with clusers
AliTRDqaGuiClustersSM *fGSM; // panel with clusers
AliTRDqaGuiClustersStack *fGStack; // panel with clusers
- AliTRDqaGuiESDs *fGESDs[2]; // panel with ESDs
+ AliTRDqaGuiESDs *fGESDs[3]; // panel with ESDs
ClassDef(AliTRDqaGuiMain,1) //
};
fGChamber->SetRangeNoise(0.5, 2);
fGSM->SetRangePed(8, 11);
- fGSM->SetRangeNoise(0.5, 2);
+ fGSM->SetRangeNoise(0.5, 3);
fGTabPanel->AddTab("Super Module", fGSM);
fGTabPanel->AddTab("Chamber", fGChamber);
-
+
AddFrame(fGTabPanel);
SetWindowName("TRD QA -- Black Events");