From 891ddd894dc11c260938729fadf02c7153fda024 Mon Sep 17 00:00:00 2001 From: coppedis Date: Fri, 24 Sep 2010 20:27:57 +0000 Subject: [PATCH] No. of dem shifter reduced to 3+ text to explain histo status --- ZDC/AliZDCQAChecker.cxx | 312 ++++++++++++++++++++++------------- ZDC/AliZDCQAChecker.h | 3 + ZDC/AliZDCQADataMakerRec.cxx | 226 ++++++++++++++++++------- 3 files changed, 368 insertions(+), 173 deletions(-) diff --git a/ZDC/AliZDCQAChecker.cxx b/ZDC/AliZDCQAChecker.cxx index 7804bac423b..97d5f8d5a47 100644 --- a/ZDC/AliZDCQAChecker.cxx +++ b/ZDC/AliZDCQAChecker.cxx @@ -18,6 +18,9 @@ #include #include #include +#include +#include +#include "TList.h" // --- Standard library --- @@ -39,6 +42,9 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra Int_t ihitHisto=0, idigHisto=0; Int_t irecHisto=0, irawHisto=0, esdInd=0; + TObjArray messages; + messages.SetOwner(kTRUE); + for(Int_t specie = 0; specieIsEventSpecieSet(AliRecoParam::ConvertIndex(specie))) @@ -187,57 +193,79 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra else if(index == AliQAv1::kRAW) { // // Check RAW HIGH GAIN CHAIN histos - if(hdata->GetEntries()>0){ - if(irawHisto==0) sumADCZNC = hdata->GetMean(); - else if(irawHisto==1) sumADCZNA = hdata->GetMean(); - else if(irawHisto==2) sumADCZPC = hdata->GetMean(); - else if(irawHisto==3) sumADCZPA = hdata->GetMean(); - else if(irawHisto==6) adcQZNC = hdata->GetMean(); - else if(irawHisto==7) adcQZNA = hdata->GetMean(); - else if(irawHisto==8) adcQZPC = hdata->GetMean(); - else if(irawHisto==9) adcQZPA = hdata->GetMean(); - else if(irawHisto==10) adcCZNC = hdata->GetMean(); - else if(irawHisto==11) adcCZNA = hdata->GetMean(); - else if(irawHisto==12) adcCZPC = hdata->GetMean(); - else if(irawHisto==13) adcCZPA = hdata->GetMean(); + + messages.Clear(); + + Bool_t iDetPM = kTRUE; + // --- Checks + if(irawHisto==22){ + Float_t resADC=0.; + for(int ibin=1; ibin<=hdata->GetNbinsX(); ibin++){ + if((hdata->GetBinContent(ibin))>10.){ + res=1.; + } + else if((hdata->GetBinContent(ibin))<10. && + (ibin==1 || ibin==6 || ibin==11 || ibin==12 || ibin==13 || ibin==18)){ + res=0.5; + iDetPM = kFALSE; + } + // + resADC += res; + test[specie] += res; + count++; + } + 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 RUN")); + } + else if(iDetPM==kTRUE) messages.Add(new TObjString("Minor problem with ADCs")); + SetupHisto(messages, *hdata, rv); } - // - // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff - if(irawHisto==13){ - if(TMath::Abs(sumADCZNC)>1.e-10){ - if((TMath::Abs(adcQZNC-adcCZNC)/adcCZNC)1.e-10){ - if((TMath::Abs(adcQZNA-adcCZNA)/adcCZNA)1.e-10){ - if((TMath::Abs(adcQZPC-adcCZPC)/adcCZPC)1.e-10){ - if((TMath::Abs(adcQZPA-adcCZPA)/adcCZPA)GetNbinsX(); ibin++){ + if(TMath::Abs((hdata->GetBinContent(ibin))-refTDCs[ibin-1])<4.){ + res=1.; + } + else{ + res=0.5; + } + // + resTDC += res; + test[specie] += res; + count++; + } + 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{ + messages.Add(new TObjString("Serious problem in ZDC timing")); + messages.Add(new TObjString("IF THIS IS NOT A TECHNICAL RUN")); + } + SetupHisto(messages, *hdata, rv); + } + else if(irawHisto==26){ + Double_t yZNC=hdata->GetBinContent(2); + Double_t yZNA=hdata->GetBinContent(4); + if(TMath::Abs(yZNC)<0.4 && TMath::Abs(yZNA)<0.4) res=1.; + else res=0.7; + test[specie] += res; + count++; + // + if(res == 1.) messages.Add(new TObjString("ZN positions are OK!")); + else{ + messages.Add(new TObjString("Problem in ZN positions!")); + messages.Add(new TObjString("IF THIS IS NOT A TECHNICAL RUN")); } + SetupHisto(messages, *hdata, res); } - irawHisto++; + irawHisto++; + } // ------------------------------------------------------------------- else if(index == AliQAv1::kREC) { @@ -539,77 +567,80 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra else if(index == AliQAv1::kRAW){ // // Check RAW HIGH GAIN CHAIN histos - if(hdata->GetEntries()>0){ - if(irawHisto==0) sumADCZNC = hdata->GetMean(); - else if(irawHisto==1) sumADCZNA = hdata->GetMean(); - else if(irawHisto==2) sumADCZPC = hdata->GetMean(); - else if(irawHisto==3) sumADCZPA = hdata->GetMean(); - else if(irawHisto==6) adcQZNC = hdata->GetMean(); - else if(irawHisto==7) adcQZNA = hdata->GetMean(); - else if(irawHisto==8) adcQZPC = hdata->GetMean(); - else if(irawHisto==9) adcQZPA = hdata->GetMean(); - else if(irawHisto==10) adcCZNC = hdata->GetMean(); - else if(irawHisto==11) adcCZNA = hdata->GetMean(); - else if(irawHisto==12) adcCZPC = hdata->GetMean(); - else if(irawHisto==13) adcCZPA = hdata->GetMean(); + + messages.Clear(); + + Bool_t iDetPM = kTRUE; + // --- Checks + if(irawHisto==22){ + Float_t resADC=0.; + for(int ibin=1; ibin<=hdata->GetNbinsX(); ibin++){ + if((hdata->GetBinContent(ibin))>10.){ + res=1.; + } + else if((hdata->GetBinContent(ibin))<10. && + (ibin==1 || ibin==6 || ibin==11 || ibin==12 || ibin==13 || ibin==18)){ + res=0.5; + iDetPM = kFALSE; + } + // + resADC += res; + test[specie] += res; + count++; + } + 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 RUN")); + } + else if(iDetPM==kTRUE) messages.Add(new TObjString("Minor problem with ADCs")); + SetupHisto(messages, *hdata, rv); } - // - // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff - // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff - if(irawHisto==3){ - if(TMath::Abs(sumADCZNC)>1.e-10 && TMath::Abs(sumADCZNA)>1.e-10){ - if((2*TMath::Abs(sumADCZNC-sumADCZNA)/(sumADCZNA+sumADCZNC))1.e-10 && TMath::Abs(sumADCZPA)>1.e-10){ - if((TMath::Abs(sumADCZPC-sumADCZPA)/(sumADCZPA+sumADCZPC))1.e-10){ - if((TMath::Abs(adcQZNC-adcCZNC)/adcCZNC)1.e-10){ - if((TMath::Abs(adcQZNA-adcCZNA)/adcCZNA)1.e-10){ - if((TMath::Abs(adcQZPC-adcCZPC)/adcCZPC)1.e-10){ - if((TMath::Abs(adcQZPA-adcCZPA)/adcCZPA)GetNbinsX(); ibin++){ + if(TMath::Abs((hdata->GetBinContent(ibin))-refTDCs[ibin-1])<4.){ + res=1.; + } + else{ + res=0.5; + } + // + resTDC += res; + test[specie] += res; + count++; + } + 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{ + messages.Add(new TObjString("Serious problem in ZDC timing")); + messages.Add(new TObjString("IF THIS IS NOT A TECHNICAL RUN")); + } + SetupHisto(messages, *hdata, rv); + } + else if(irawHisto==26){ + Double_t yZNC=hdata->GetBinContent(2); + Double_t yZNA=hdata->GetBinContent(4); + if(TMath::Abs(yZNC)<0.4 && TMath::Abs(yZNA)<0.4) res=1.; + else res=0.5; + test[specie] += res; + count++; + // + printf(" yZNC = %1.2f yZNA = %1.2f -> res %1.2f\n",yZNC, yZNA,res); + if(res == 1.) messages.Add(new TObjString("ZN positions are OK!")); + else{ + messages.Add(new TObjString("Problem in ZN positions!")); + messages.Add(new TObjString("IF THIS IS NOT A TECHNICAL RUN")); } + SetupHisto(messages, *hdata, res); } - irawHisto++; + irawHisto++; + } // ------------------------------------------------------------------- else if(index == AliQAv1::kREC){ @@ -789,3 +820,52 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra AliDebug(AliQAv1::GetQADebugLevel(), Form("\n\t ZDC QA check result = %1.2f\n",test[specie])); } // Loop on species } + +//___________________________________________________________________ +void AliZDCQAChecker::SetupHisto(const TObjArray& messages, TH1& histo, Float_t& code) +{ + // + /// Add text to histos + // + + Double_t y1 = 0.97 - (messages.GetLast()+2)*0.075; + TPaveText* text = new TPaveText(0.6,y1,0.99,0.99,"NDC"); + + TIter next(&messages); + TObjString* str; + + while ( ( str = static_cast(next()) ) ){ + text->AddText(str->String()); + } + + TString defaultText = ""; + + Int_t color = 0; + if(code==1.){ + color = kGreen; + defaultText = "Everything is fine!"; + } + else if(code<1. && code>=0.9){ + color = kYellow; + defaultText = "To be monitored in next runs"; + } + else if(code<0.9 && code>=0.6){ + color = kOrange; + defaultText = "notify the expert DURING THE DAY!"; + } + else{ + color = kRed; + defaultText = "CALL THE EXPERT!!!!"; + } + + + text->AddText(defaultText.Data()); + text->SetFillColor(color); + + //histo.SetFillStyle(1001); + //histo.SetFillColor(color); + + histo.SetStats(kFALSE); + + histo.GetListOfFunctions()->Add(text); +} diff --git a/ZDC/AliZDCQAChecker.h b/ZDC/AliZDCQAChecker.h index 5526655700a..c4069e08b6d 100644 --- a/ZDC/AliZDCQAChecker.h +++ b/ZDC/AliZDCQAChecker.h @@ -13,6 +13,8 @@ #include "AliQAv1.h" #include "AliQACheckerBase.h" +class TObjArray; + class AliZDCQAChecker: public AliQACheckerBase { public: @@ -24,6 +26,7 @@ public: virtual void Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArray ** list, const AliDetectorRecoParam * /*recoParam*/); + void SetupHisto(const TObjArray& messages, TH1& histo, Float_t& code); ClassDef(AliZDCQAChecker,1) // description diff --git a/ZDC/AliZDCQADataMakerRec.cxx b/ZDC/AliZDCQADataMakerRec.cxx index 85b6b4e709a..7cea6118863 100644 --- a/ZDC/AliZDCQADataMakerRec.cxx +++ b/ZDC/AliZDCQADataMakerRec.cxx @@ -180,17 +180,17 @@ void AliZDCQADataMakerRec::InitRaws() Add2RawsList(hZNASpectrum, 1, expert, !image); Add2RawsList(hZPCSpectrum, 2, expert, !image); Add2RawsList(hZPASpectrum, 3, expert, !image); - Add2RawsList(hZEM1Spectrum, 4, !expert, image); - Add2RawsList(hZEM2Spectrum, 5, !expert, image); + Add2RawsList(hZEM1Spectrum, 4, expert, !image); + Add2RawsList(hZEM2Spectrum, 5, expert, !image); // TH2F * hZNCpmCvsPMq = new TH2F("hZNCpmCvsPMq", "ZNC;PMC [ADC counts];Sum(PMQ) [ADC counts]",50,8.,1208.,50,8., 1208.); TH2F * hZPCpmCvsPMq = new TH2F("hZPCpmCvsPMq", "ZPC;PMC [ADC counts];Sum(PMQ) [ADC counts]",50,8.,1208.,50,8., 1208.); TH2F * hZNApmCvsPMq = new TH2F("hZNApmCvsPMq", "ZNA;PMC [ADC counts];Sum(PMQ) [ADC counts]",50,8.,1208.,50,8., 1208.); TH2F * hZPApmCvsPMq = new TH2F("hZPApmCvsPMq", "ZPA;PMC [ADC counts];Sum(PMQ) [ADC counts]",50,8.,1208.,50,8., 1208.); - Add2RawsList(hZNCpmCvsPMq, 6, !expert, image); - Add2RawsList(hZNApmCvsPMq, 7, !expert, image); - Add2RawsList(hZPCpmCvsPMq, 8, !expert, image); - Add2RawsList(hZPApmCvsPMq, 9, !expert, image); + Add2RawsList(hZNCpmCvsPMq, 6, expert, !image); + Add2RawsList(hZNApmCvsPMq, 7, expert, !image); + Add2RawsList(hZPCpmCvsPMq, 8, expert, !image); + Add2RawsList(hZPApmCvsPMq, 9, expert, !image); TH1F * hRawPMCZNC = new TH1F("hRawPMCZNC", "Raw ZNC PMC;Amplitude [ADC counts];Counts",100, 8., 1208.); TH1F * hRawPMCZNA = new TH1F("hRawPMCZNA", "Raw ZNA PMC;Amplitude [ADC counts];Counts",100, 8., 1208.); @@ -210,10 +210,30 @@ void AliZDCQADataMakerRec::InitRaws() Add2RawsList(hRawSumQZPA, 17, expert, !image); TH1F * hRawTDCZEM1 = new TH1F("hRawTDCZEM1", "Raw TDC ZEM1;TDC [ns]",160, -100., -60.); - Add2RawsList(hRawTDCZEM1, 18, !expert, image); + Add2RawsList(hRawTDCZEM1, 18, expert, !image); TH1F * hRawTDCZPC = new TH1F("hRawTDCZPC", "Raw TDC ZPC;TDC [ns]",160, -100., -60.); - Add2RawsList(hRawTDCZPC, 19, !expert, image); - + Add2RawsList(hRawTDCZPC, 19, expert, !image); + + TProfile * hRawADCProfs = new TProfile("hRawADCProfs", "ADC profiles;ADC id;Mean ADC values",22,-0.5,21.5,10.,1210.,""); + Add2RawsList(hRawADCProfs, 20, expert, !image); + TProfile * hRawTDCProfs = new TProfile("hRawTDCProfs", "TDC profiles;TDC id;Mean TDC values",6,0.5,6.5,-100.,-60.,"S"); + Add2RawsList(hRawTDCProfs, 21, expert, !image); + + TH1F * hRawADCs = new TH1F("hRawADCs", "ADCs;ADC id;Mean ADC values",22,-0.5,21.5); + hRawADCs->SetMinimum(10); + Add2RawsList(hRawADCs, 22, !expert, image); + + TH1F * hRawTDCs = new TH1F("hRawTDCs", "TDCs;TDC id;Mean TDC values",6,0.5,6.5); + hRawTDCs->SetMaximum(-60); + Add2RawsList(hRawTDCs, 23, !expert, image); + + TH2F *hZNCrawCentr = new TH2F("hZNCrawCentr", "Centroid in ZNC;X (cm);Y(cm)", 100, -5.,5.,100,-5.,5.); + Add2RawsList(hZNCrawCentr, 24, expert, !image); + TH2F *hZNArawCentr = new TH2F("hZNArawCentr", "Centroid in ZNA;X (cm);Y(cm)", 100, -5.,5.,100,-5.,5.); + Add2RawsList(hZNArawCentr, 25, expert, !image); + + TH1F *hRawCentr = new TH1F("hRawCentr","Centroid in ZNCs; ZNC-ZNA coordinates; Coordinate value (cm)", 4, 0.5, 4.5); + Add2RawsList(hRawCentr, 26, !expert, image); } //____________________________________________________________________________ @@ -260,8 +280,8 @@ void AliZDCQADataMakerRec::InitESDs() const Bool_t expert = kTRUE ; const Bool_t image = kTRUE ; - TH2F * hZNCcentr = new TH2F("hZNCcentr", "Centroid in ZNC;X [cm];Y[cm]", 100, -5.,5.,100,-5.,5.); - TH2F * hZNAcentr = new TH2F("hZNAcentr", "Centroid in ZNA;X [cm];Y[cm]", 100, -5.,5.,100,-5.,5.); + TH2F * hZNCcentr = new TH2F("hZNCcentr", "Centroid in ZNC;X (cm);Y(cm)", 100, -5.,5.,100,-5.,5.); + TH2F * hZNAcentr = new TH2F("hZNAcentr", "Centroid in ZNA;X (cm);Y(cm)", 100, -5.,5.,100,-5.,5.); Add2ESDsList(hZNCcentr, 0, !expert, image); Add2ESDsList(hZNAcentr, 1, !expert, image); // @@ -448,12 +468,18 @@ void AliZDCQADataMakerRec::MakeRaws(AliRawReader *rawReader) Float_t zncpmC=0., znapmC=0., zpcpmC=0., zpapmC=0.; Bool_t isZNCFired=kFALSE, isZPCFired=kFALSE, isZNAFired=kFALSE, isZPAFired=kFALSE; Int_t indZNC=0, indZNA=0, indZPC=0, indZPA=0; - Float_t zpcTDC[10], zem1TDC[10]; + Float_t zncTDC[10], zpcTDC[10], zem1TDC[10], zem2TDC[10], znaTDC[10], zpaTDC[10]; for(Int_t i=0; i<10; i++){ - zpcTDC[i] = zem1TDC[i] = -999.; + zncTDC[i]=zpcTDC[i]=zem1TDC[i]=zem2TDC[i]=znaTDC[i]=zpaTDC[i]=-999.; } Float_t tdcL0=-999.; - Int_t iMultZPCTDC=0, iMultZEMTDC=0; + Int_t iMultZNCTDC=0, iMultZPCTDC=0, iMultZEM1TDC=0, iMultZEM2TDC=0, iMultZNATDC=0, iMultZPATDC=0; + + const Float_t x[4] = {-1.75, 1.75, -1.75, 1.75}; + const Float_t y[4] = {-1.75, -1.75, 1.75, 1.75}; + const Float_t alpha=0.5; + Float_t numXZNC=0., numYZNC=0., denZNC=0., wZNC=0.; + Float_t numXZNA=0., numYZNA=0., denZNA=0., wZNA=0.; rawReader->Reset(); AliZDCRawStream stream(rawReader); @@ -469,24 +495,35 @@ void AliZDCQADataMakerRec::MakeRaws(AliRawReader *rawReader) // Stuff for pedestal subtraction if(quad != 5){ // ZDCs (not reference PTMs) + Float_t pedSubVal=-99.; if(det == 1){ pedindex = quad; if(gain == 0){ - Float_t pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]); + pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]); zncSignal += pedSubVal; isZNCFired = kTRUE; - if(quad!=0) zncSumQ += pedSubVal; + if(quad!=0){ + zncSumQ += pedSubVal; + if(pedSubVal>0.&& zncpmC>50.){ + wZNC = TMath::Power(pedSubVal, alpha); + numXZNC += x[quad-1]*wZNC; + numYZNC += y[quad-1]*wZNC; + denZNC += wZNC; + } + } else{ zncpmC = pedSubVal; GetRawsData(10)->Fill(zncpmC); } indZNC++; + + GetRawsData(20)->Fill(pedindex, pedSubVal); } } else if(det == 2){ pedindex = quad+5; if(gain == 0){ - Float_t pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]); + pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]); zpcSignal += pedSubVal; isZPCFired = kTRUE; if(quad!=0) zpcSumQ += pedSubVal; @@ -495,41 +532,59 @@ void AliZDCQADataMakerRec::MakeRaws(AliRawReader *rawReader) GetRawsData(12)->Fill(zpcpmC); } indZPC++; + + GetRawsData(20)->Fill(pedindex, pedSubVal); } } else if(det == 3){ pedindex = quad+9; if(quad==1){ if(gain == 0){ - Float_t pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]); + pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]); GetRawsData(4)->Fill(pedSubVal); + + GetRawsData(20)->Fill(pedindex, pedSubVal); } } else if(quad==2){ if(gain == 0){ - Float_t pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]); + pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]); GetRawsData(5)->Fill(pedSubVal); + + GetRawsData(20)->Fill(pedindex, pedSubVal); } } } else if(det == 4){ pedindex = quad+12; if(gain == 0){ - Float_t pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]); + pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]); znaSignal += pedSubVal; isZNAFired = kTRUE; - if(quad!=0) znaSumQ += pedSubVal; + if(quad!=0){ + znaSumQ += pedSubVal; + if(pedSubVal>0.&& znapmC>50.) { + wZNA = TMath::Power(pedSubVal, alpha); + numXZNA += x[quad-1]*wZNA; + numYZNA += y[quad-1]*wZNA; + denZNA += wZNA; + } + } else{ znapmC = pedSubVal; GetRawsData(11)->Fill(znapmC); } indZNA++; + + GetRawsData(20)->Fill(pedindex, pedSubVal); + //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){ - Float_t pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]); + pedSubVal = (Float_t) (stream.GetADCValue()-meanPed[pedindex]); zpaSignal += pedSubVal; isZPAFired = kTRUE; if(quad!=0) zpaSumQ += pedSubVal; @@ -538,14 +593,27 @@ void AliZDCQADataMakerRec::MakeRaws(AliRawReader *rawReader) GetRawsData(13)->Fill(zpapmC); } indZPA++; + + GetRawsData(20)->Fill(pedindex, pedSubVal); + //GetRawsData(22)->SetBinContent(pedindex+1, GetRawsData(20)->GetBinContent(pedindex+1)); + //GetRawsData(22)->SetBinError(pedindex+1, GetRawsData(20)->GetBinError(pedindex+1)); } } - } - // + + } + if(isZNCFired && indZNC==5){ GetRawsData(0)->Fill(zncSignal); GetRawsData(6)->Fill(zncpmC, zncSumQ); GetRawsData(14)->Fill(zncSumQ); + // + Float_t xZNC, yZNC; + if(denZNC!=0){ + xZNC = numXZNC/denZNC; + yZNC = numYZNC/denZNC; + } + else xZNC = yZNC = 999.; + GetRawsData(24)->Fill(xZNC, yZNC); } if(isZPCFired && indZPC==5){ GetRawsData(2)->Fill(zpcSignal); @@ -553,14 +621,22 @@ void AliZDCQADataMakerRec::MakeRaws(AliRawReader *rawReader) GetRawsData(16)->Fill(zpcSumQ); } if(isZNAFired && indZNA==5){ - GetRawsData(1)->Fill(znaSignal); - GetRawsData(7)->Fill(znapmC, znaSumQ); - GetRawsData(15)->Fill(znaSumQ); + GetRawsData(1)->Fill(znaSignal); + GetRawsData(7)->Fill(znapmC, znaSumQ); + GetRawsData(15)->Fill(znaSumQ); + // + Float_t xZNA, yZNA; + if(denZNA!=0){ + xZNA = numXZNA/denZNA; + yZNA = numYZNA/denZNA; + } + else xZNA = yZNA = 999.; + GetRawsData(25)->Fill(xZNA, yZNA); } if(isZPAFired && indZPA==5){ - GetRawsData(3)->Fill(zpaSignal); - GetRawsData(9)->Fill(zpapmC, zpaSumQ); - GetRawsData(17)->Fill(zpaSumQ); + GetRawsData(3)->Fill(zpaSignal); + GetRawsData(9)->Fill(zpapmC, zpaSumQ); + GetRawsData(17)->Fill(zpaSumQ); } if(indZNC==5){ @@ -579,29 +655,65 @@ void AliZDCQADataMakerRec::MakeRaws(AliRawReader *rawReader) zpaSignal = zpaSumQ = zpapmC = 0; isZPAFired=kFALSE; indZPA=0; } - + } //IsADCDataWord && signal ADCs else if(stream.IsZDCTDCDatum()){ - if(stream.GetChannel()==3){ + if(stream.GetChannel()==1){ + zncTDC[iMultZNCTDC] = (0.025*(stream.GetZDCTDCDatum())); + iMultZNCTDC++; + } + else if(stream.GetChannel()==3){ zpcTDC[iMultZPCTDC] = (0.025*(stream.GetZDCTDCDatum())); iMultZPCTDC++; } + else if(stream.GetChannel()==5){ + znaTDC[iMultZNATDC] = (0.025*(stream.GetZDCTDCDatum())); + iMultZNATDC++; + } + else if(stream.GetChannel()==7){ + zpaTDC[iMultZPATDC] = (0.025*(stream.GetZDCTDCDatum())); + iMultZPATDC++; + } else if(stream.GetChannel()==8){ - zem1TDC[iMultZEMTDC] = (0.025*(stream.GetZDCTDCDatum())); - iMultZEMTDC++; + zem1TDC[iMultZEM1TDC] = (0.025*(stream.GetZDCTDCDatum())); + iMultZEM1TDC++; + } + else if(stream.GetChannel()==9){ + zem2TDC[iMultZEM2TDC] = (0.025*(stream.GetZDCTDCDatum())); + iMultZEM2TDC++; } else if(stream.GetChannel()==16) tdcL0 = (0.025*(stream.GetZDCTDCDatum())); if(stream.GetChannel()==16 && tdcL0!=-999.){ for(Int_t iHit=0; iHit<10; iHit++){ + if(zncTDC[iHit]!=-999.){ + GetRawsData(21)->Fill(1, zncTDC[iHit]-tdcL0); + //GetRawsData(23)->SetBinContent(1, GetRawsData(21)->GetBinContent(1)); + } if(zpcTDC[iHit]!=-999.){ Float_t diffZPC = zpcTDC[iHit]-tdcL0; GetRawsData(19)->Fill(diffZPC); + GetRawsData(21)->Fill(2, diffZPC); + //GetRawsData(23)->SetBinContent(2, GetRawsData(21)->GetBinContent(3)); + } + if(znaTDC[iHit]!=-999.){ + GetRawsData(21)->Fill(3, znaTDC[iHit]-tdcL0); + //GetRawsData(23)->SetBinContent(3, GetRawsData(21)->GetBinContent(5)); + } + if(zpaTDC[iHit]!=-999.){ + GetRawsData(21)->Fill(4, zpaTDC[iHit]-tdcL0); + //GetRawsData(23)->SetBinContent(4, GetRawsData(21)->GetBinContent(7)); } if(zem1TDC[iHit]!=-999.){ Float_t diffZEM1 = zem1TDC[iHit]-tdcL0; GetRawsData(18)->Fill(diffZEM1); + GetRawsData(21)->Fill(5, diffZEM1); + //GetRawsData(23)->SetBinContent(5, GetRawsData(21)->GetBinContent(8)); } + if(zem2TDC[iHit]!=-999.){ + GetRawsData(21)->Fill(6, zem2TDC[iHit]-tdcL0); + //GetRawsData(23)->SetBinContent(6, GetRawsData(21)->GetBinContent(9)); + } } // tdcL0 = -999.; @@ -769,31 +881,31 @@ void AliZDCQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArr //Detector specific actions at end of cycle // do the QA checking if( task == AliQAv1::kRAWS){ - if (!GetRawsData(4) || !GetRawsData(5) || !GetRawsData(6) || !GetRawsData(7) || - !GetRawsData(8) || !GetRawsData(9) || !GetRawsData(10) || !GetRawsData(11) || - !GetRawsData(12) || !GetRawsData(13)) { - printf(" WARNING!!! AliZDCQADataMaker Rec -> No histogram for DQM found!\n"); + if (!GetRawsData(20) || !GetRawsData(21) || !GetRawsData(24) || !GetRawsData(25)) { + printf(" WARNING!!! AliZDCQADataMaker Rec -> Not all histogram for DQM found!\n"); } else{ - - GetRawsData(6)->SetOption("colz"); - GetRawsData(7)->SetOption("colz"); - GetRawsData(8)->SetOption("colz"); - GetRawsData(9)->SetOption("colz"); - - GetRawsData(4)->SetLineColor(kAzure+1); GetRawsData(4)->SetLineWidth(2); - GetRawsData(5)->SetLineColor(kAzure+2); GetRawsData(5)->SetLineWidth(2); - GetRawsData(10)->SetLineColor(kBlue); GetRawsData(10)->SetLineWidth(2); - GetRawsData(11)->SetLineColor(kBlue+1); GetRawsData(11)->SetLineWidth(2); - GetRawsData(12)->SetLineColor(kBlue+2); GetRawsData(12)->SetLineWidth(2); - GetRawsData(13)->SetLineColor(kBlue+3); GetRawsData(13)->SetLineWidth(2); - - /*if(((GetRawsData(4))->GetEntries())>0) GetRawsData(4)->SetDrawOption("LOGY"); - if(((GetRawsData(5))->GetEntries())>0) GetRawsData(5)->SetDrawOption("LOGY"); - if(((GetRawsData(10))->GetEntries())>0) GetRawsData(10)->SetDrawOption("LOGY"); - if(((GetRawsData(11))->GetEntries())>0) GetRawsData(11)->SetDrawOption("LOGY"); - if(((GetRawsData(12))->GetEntries())>0) GetRawsData(12)->SetDrawOption("LOGY"); - if(((GetRawsData(13))->GetEntries())>0) GetRawsData(13)->SetDrawOption("LOGY");*/ + for(Int_t ibin=1; ibin<=GetRawsData(20)->GetNbinsX(); ibin++){ + GetRawsData(22)->SetBinContent(ibin, GetRawsData(20)->GetBinContent(ibin)); + GetRawsData(22)->SetBinError(ibin, GetRawsData(20)->GetBinError(ibin)); + GetRawsData(22)->SetLineColor(kBlue); GetRawsData(22)->SetLineWidth(2); + } + for(Int_t ibin=1; ibin<=GetRawsData(21)->GetNbinsX(); ibin++){ + GetRawsData(23)->SetBinContent(ibin, GetRawsData(21)->GetBinContent(ibin)); + GetRawsData(23)->SetBinError(ibin, GetRawsData(21)->GetBinError(ibin)); + GetRawsData(23)->SetLineColor(kAzure-3); GetRawsData(23)->SetLineWidth(2); + } + // + Double_t xznc = GetRawsData(24)->GetMean(1); + Double_t yznc = GetRawsData(24)->GetMean(2); + GetRawsData(26)->SetBinContent(1., xznc); + GetRawsData(26)->SetBinContent(2., yznc); + Double_t xzna = GetRawsData(25)->GetMean(1); + Double_t yzna = GetRawsData(25)->GetMean(2); + GetRawsData(26)->SetBinContent(3., xzna); + GetRawsData(26)->SetBinContent(4., yzna); + GetRawsData(26)->SetLineColor(kPink-9); GetRawsData(26)->SetLineWidth(2); + GetRawsData(26)->SetOption("E"); } } -- 2.43.0