Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.;
Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.;
Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.;
+ Int_t nentries = -99;
while((hdata = dynamic_cast<TH1 *>(next()))){
if(hdata){
Bool_t iDetPM = kTRUE;
// --- Checks
+ if(irawHisto==16) nentries = Int_t (hdata->GetEntries());
if(irawHisto==18){
Float_t resADC=0.;
for(int ibin=1; ibin<=hdata->GetNbinsX(); ibin++){
test[specie] += res;
count++;
}
+ if(nentries != -99) messages.Add(new TObjString(Form("#entries %d",nentries)));
+ else messages.Add(new TObjString("#entries not known"));
+ //
Float_t rv=1.;
if(hdata->GetNbinsX() != 0) rv = resADC/hdata->GetNbinsX();
if(rv == 1.) messages.Add(new TObjString("ADCs are OK!"));
else if(iDetPM==kFALSE){
- messages.Add(new TObjString("Problem with ADCs!"));
- messages.Add(new TObjString("IF THIS IS NOT A TECHNICAL"));
- messages.Add(new TObjString("OR A STANDALONE_PEDESTAL RUN"));
+ messages.Add(new TObjString("Problem with some ADC!"));
+ messages.Add(new TObjString("IF THIS IS A PHYSICS RUN"));
}
else if(iDetPM==kTRUE) messages.Add(new TObjString("Minor problem with ADCs"));
SetupHisto(messages, *hdata, rv);
else if(rv<1. && rv>0.75) messages.Add(new TObjString("Minor problem with TDCs"));
else{
messages.Add(new TObjString("Serious problem in ZDC timing"));
- messages.Add(new TObjString("IF THIS IS NOT A TECHNICAL RUN"));
+ messages.Add(new TObjString("IF THIS IS A PHYSICS RUN"));
}
SetupHisto(messages, *hdata, rv);
}
// ====================================================================
// Checks for A-A events
// ====================================================================
- else if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kHighMult) {
+ if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kHighMult) {
if(list[specie]->GetEntries()==0){
AliWarning("\t The list to be checked is empty!");
return ;
Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.;
Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.;
Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.;
+ Int_t nentries=-99;
while((hdata = dynamic_cast<TH1 *>(next()))){
if(hdata){
Bool_t iDetPM = kTRUE;
// --- Checks
+ if(irawHisto==16) nentries = Int_t (hdata->GetEntries());
if(irawHisto==18){
Float_t resADC=0.;
for(int ibin=1; ibin<=hdata->GetNbinsX(); ibin++){
test[specie] += res;
count++;
}
+ if(nentries != -99) messages.Add(new TObjString(Form("#entries %d",nentries)));
+ else messages.Add(new TObjString("#entries not known"));
+ //
Float_t rv=1.;
if(hdata->GetNbinsX() != 0) rv = resADC/hdata->GetNbinsX();
- if(rv == 1.) messages.Add(new TObjString("ADCs are OK!"));
+ if(rv > 0.98) messages.Add(new TObjString("ADCs are OK!"));
else if(iDetPM==kFALSE){
messages.Add(new TObjString("Problem with ADCs!"));
- messages.Add(new TObjString("IF THIS IS NOT A TECHNICAL RUN"));
+ messages.Add(new TObjString("IF THIS IS A PHYSICS RUN"));
}
else if(iDetPM==kTRUE) messages.Add(new TObjString("Minor problem with ADCs"));
SetupHisto(messages, *hdata, rv);
}
else if(irawHisto==19){
- Double_t refTDCs[6] = {-322.5,-319.1,-320.9,-319.2,-319.7,-319.2};
+ // Reference values from RUN 137161
+ Double_t refTDCs[6] = {-320.7,-319.0,-318.6,-319.9,-321.3,-320.8};
Float_t resTDC=0.;
for(int ibin=1; ibin<=hdata->GetNbinsX(); ibin++){
- if(TMath::Abs((hdata->GetBinContent(ibin))-refTDCs[ibin-1])<4.){
+ if(TMath::Abs((hdata->GetBinContent(ibin))-refTDCs[ibin-1])<3.){
res=1.;
}
- else{
- res=0.5;
+ else if(TMath::Abs((hdata->GetBinContent(ibin))-refTDCs[ibin-1])<4.){
+ res=0.8;
}
+ else res=0.5;
//
resTDC += res;
test[specie] += res;
Float_t rv=1.;
if(hdata->GetNbinsX() != 0) rv = resTDC/hdata->GetNbinsX();
if(rv == 1.) messages.Add(new TObjString("TDCs are OK!"));
- else if(rv<1 && rv>0.9) messages.Add(new TObjString("Minor problem with TDCs"));
+ else if(rv<1 && rv>0.75) messages.Add(new TObjString("Minor problem with TDCs"));
else{
messages.Add(new TObjString("Serious problem in ZDC timing"));
- messages.Add(new TObjString("IF THIS IS NOT A TECHNICAL RUN"));
+ messages.Add(new TObjString("IF THIS IS A PHYSICS RUN"));
}
SetupHisto(messages, *hdata, rv);
}
// ====================================================================
// Checks for Calibration events
// ====================================================================
- else if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kCalib) {
- AliWarning(Form("\n\t No check implemented in ZDC QA for %s task\n",taskName));
+ if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kCalib) {
+ AliWarning(Form("\n\t No check implemented in ZDC QA for %s task in CALIBRATION events\n",taskName));
return ;
} // Calibration
// ====================================================================
// Checks for cosmic events
// ====================================================================
else if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kCosmic) {
- AliWarning(Form("\n\t No check needed in ZDC QA for %s task\n",taskName));
+ AliWarning(Form("\n\t No check needed in ZDC QA for %s task in COSMIC events\n",taskName));
return ;
} // Cosmic
if(TMath::Abs(count)>1.e-10) test[specie] = test[specie]/count;
color = kGreen;
defaultText = "Everything is fine!";
}
- else if(code<1. && code>=0.9){
+ else if(code<1. && code>=0.85){
color = kYellow;
defaultText = "To be monitored in next runs";
}
- else if(code<0.9 && code>=0.6){
+ else if(code<0.85 && code>=0.6){
color = kOrange;
defaultText = "notify the expert DURING THE DAY!";
}
else if(code<0.6){
color = kRed;
- defaultText = "CALL THE EXPERT!!!!";
+ defaultText = "PLEASE CALL THE EXPERT!!!!";
}
TH1F * hZPCSpectrum = new TH1F("hZPCSpectrum","ZPC spectrum;Amplitude [ADC counts];Counts",100,0.,1200.);
TH1F * hZNASpectrum = new TH1F("hZNASpectrum","ZNA spectrum;Amplitude [ADC counts];Counts",100,0.,1200.);
TH1F * hZPASpectrum = new TH1F("hZPASpectrum","ZPA spectrum;Amplitude [ADC counts];Counts",100,0.,1200.);
+ // Booking from ch. 8 for checked signals to avoid running QA on pedestals!
TH1F * hZEM1Spectrum = new TH1F("hZEM1Spectrum","ZEM1 spectrum;Amplitude [ADC counts];Counts",100,8., 1208.);
TH1F * hZEM2Spectrum = new TH1F("hZEM2Spectrum","ZEM2 spectrum;Amplitude [ADC counts];Counts",100,8., 1208.);
Add2RawsList(hZNCSpectrum, 0, expert, !image);
Add2RawsList(hRawSumQZPC, 12, expert, !image);
Add2RawsList(hRawSumQZPA, 13, expert, !image);
- TH1F * hRawTDCZEM1 = new TH1F("hRawTDCZEM1", "Raw TDC ZEM1;TDC [ns]",160, -350., -310.);
+ TH1F * hRawTDCZEM1 = new TH1F("hRawTDCZEM1", "TDC ZEM1;TDC [ns]",160, -350., -310.);
Add2RawsList(hRawTDCZEM1, 14, expert, !image);
- TH1F * hRawTDCZPC = new TH1F("hRawTDCZPC", "Raw TDC ZPC;TDC [ns]",160, -350., -310.);
+ TH1F * hRawTDCZPC = new TH1F("hRawTDCZPC", "TDC ZPC;TDC [ns]",160, -350., -310.);
Add2RawsList(hRawTDCZPC, 15, expert, !image);
TProfile * hRawADCProfs = new TProfile("hRawADCProfs", "ADC profiles;ADC id;Mean ADC values",22,-0.5,21.5,10.,1210.,"");
// hRawTDCs->SetMaximum(-300); hRawTDCs->SetMinimum(-340);
Add2RawsList(hRawTDCs, 19, !expert, image);
- TH2F *hZNCrawCentr = new TH2F("hZNCrawCentr", "Centroid in ZNC;X (cm);Y(cm)", 100, -5.,5.,100,-5.,5.);
- Add2RawsList(hZNCrawCentr, 20, expert, !image);
- TH2F *hZNArawCentr = new TH2F("hZNArawCentr", "Centroid in ZNA;X (cm);Y(cm)", 100, -5.,5.,100,-5.,5.);
- Add2RawsList(hZNArawCentr, 21, expert, !image);
+ TH2F *hZNCrawCentr = new TH2F("hZNCrawCentr", "ZNC centroid;X (cm);Y(cm)", 100,-3.5,3.5,100,-3.5,3.5);
+ Add2RawsList(hZNCrawCentr, 20, expert, image);
+ TH2F *hZNArawCentr = new TH2F("hZNArawCentr", "ZNA centroid;X (cm);Y(cm)", 100,-3.5,3.5,100,-3.5,3.5);
+ Add2RawsList(hZNArawCentr, 21, expert, image);
- TH2F *hTimeZDC = new TH2F("fTimeZDC", "ZDC;TDC timing A+C vs C-A; events", 20,-30,30,120,-100,-40);
- Add2RawsList(hTimeZDC, 22, expert, !image);
+ TH2F *hTimeZDC = new TH2F("hTimeZDC", "ZDC timing;Z_{vertex}/c (ns);time (ns)", 60,-30.,30.,120,-60,-60);
+ Add2RawsList(hTimeZDC, 22, !expert, image);
//
ClonePerTrigClass(AliQAv1::kRAWS); // this should be the last line
}
// Stuff for pedestal subtraction
if(quad != 5){ // ZDCs (not reference PTMs)
- Float_t pedSubVal=-99.;
+ Float_t rawVal=-99., pedSubVal=-99.;
if(det == 1){
pedindex = quad;
if(gain == 0){
- pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]);
+ rawVal = (Float_t) (stream.GetADCValue());
+ pedSubVal = (Float_t) (rawVal-meanPed[pedindex]);
zncSignal += pedSubVal;
isZNCFired = kTRUE;
if(quad!=0){
zncSumQ += pedSubVal;
- if(pedSubVal>0.&& zncpmC>50.){
+ if(pedSubVal>0.&& zncpmC>7.){
wZNC = TMath::Power(pedSubVal, alpha);
numXZNC += x[quad-1]*wZNC;
numYZNC += y[quad-1]*wZNC;
else if(det == 2){
pedindex = quad+5;
if(gain == 0){
- pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]);
+ rawVal = (Float_t) (stream.GetADCValue());
+ pedSubVal = (Float_t) (rawVal-meanPed[pedindex]);
zpcSignal += pedSubVal;
isZPCFired = kTRUE;
if(quad!=0) zpcSumQ += pedSubVal;
pedindex = quad+9;
if(quad==1){
if(gain == 0){
- pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]);
+ rawVal = (Float_t) (stream.GetADCValue());
+ pedSubVal = (Float_t) (rawVal-meanPed[pedindex]);
FillRawsData(4,pedSubVal);
FillRawsData(16,pedindex, pedSubVal);
}
}
else if(quad==2){
if(gain == 0){
- pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]);
+ rawVal = (Float_t) (stream.GetADCValue());
+ pedSubVal = (Float_t) (rawVal-meanPed[pedindex]);
FillRawsData(5,pedSubVal);
FillRawsData(16,pedindex, pedSubVal);
}
else if(det == 4){
pedindex = quad+12;
if(gain == 0){
- pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]);
+ rawVal = (Float_t) (stream.GetADCValue());
+ pedSubVal = (Float_t) (rawVal-meanPed[pedindex]);
znaSignal += pedSubVal;
isZNAFired = kTRUE;
if(quad!=0){
znaSumQ += pedSubVal;
- if(pedSubVal>0.&& znapmC>50.) {
+ if(pedSubVal>0.&& znapmC>7.) {
wZNA = TMath::Power(pedSubVal, alpha);
numXZNA += x[quad-1]*wZNA;
numYZNA += y[quad-1]*wZNA;
indZNA++;
FillRawsData(16,pedindex, pedSubVal);
- // RS: invalid
- //GetRawsData(22)->SetBinContent(pedindex+1, GetRawsData(20)->GetBinContent(pedindex+1));
- //GetRawsData(22)->SetBinError(pedindex+1, GetRawsData(20)->GetBinError(pedindex+1));
}
}
else if(det == 5){
pedindex = quad+17;
if(gain == 0){
- pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]);
+ rawVal = (Float_t) (stream.GetADCValue());
+ pedSubVal = (Float_t) (rawVal-meanPed[pedindex]);
zpaSignal += pedSubVal;
isZPAFired = kTRUE;
if(quad!=0) zpaSumQ += pedSubVal;
indZPA++;
FillRawsData(16,pedindex, pedSubVal);
- // RS: invalid
- //GetRawsData(22)->SetBinContent(pedindex+1, GetRawsData(20)->GetBinContent(pedindex+1));
- //GetRawsData(22)->SetBinError(pedindex+1, GetRawsData(20)->GetBinError(pedindex+1));
}
}
TH1* h17 = GetRawsData(17, itc);
TH1* h18 = GetRawsData(18, itc);
TH1* h19 = GetRawsData(19, itc);
- // TH1* h20 = GetRawsData(20, itc);
- // TH1* h21 = GetRawsData(21, itc);
- if (!h16 || !h17 || !h18 || !h19) {
- AliWarning("AliZDCQADataMaker Rec -> Not all histogram for DQM found!");
+ TH1* h20 = GetRawsData(20, itc);
+ TH1* h21 = GetRawsData(21, itc);
+ TH1* h22 = GetRawsData(22, itc);
+ if (!h16 || !h17 || !h18 || !h19){
+ AliWarning("AliZDCQADataMakerRec -> RAW histos 16||17||18||19 not found!");
AliWarning(Form("for specie %s and trigger class %s",
AliRecoParam::GetEventSpecieName(specie), AliQADataMaker::GetTrigClassName(itc)));
}
else{
- h16->Draw("");
+ //h16->Draw("");
for(Int_t ibin=1; ibin<=h16->GetNbinsX(); ibin++){
h18->SetBinContent(ibin, h16->GetBinContent(ibin));
h18->SetBinError(ibin, h16->GetBinError(ibin));
}
h18->SetLineColor(kBlue); h18->SetLineWidth(2);
h19->SetLineColor(kAzure-3); h19->SetLineWidth(2);
+ }
+ if(!h20){
+ AliWarning("AliZDCQADataMakerRec -> RAW histos 20||21 not found!");
+ AliWarning(Form("for specie %s and trigger class %s",
+ AliRecoParam::GetEventSpecieName(specie), AliQADataMaker::GetTrigClassName(itc)));
+ }
+ else{
+ h20->SetMarkerColor(kPink+7);
+ h21->SetMarkerColor(kBlue+2);
+ }
+ if(!h22) {
+ AliWarning("AliZDCQADataMakerRec -> RAW histo 22 not found!");
+ AliWarning(Form("for specie %s and trigger class %s",
+ AliRecoParam::GetEventSpecieName(specie), AliQADataMaker::GetTrigClassName(itc)));
}
+ else h22->SetMarkerColor(kAzure+7);
}
} // loop over t
} // loop over species