#include "AliADReconstructor.h"
#include "AliADTrending.h"
#include "AliADCalibData.h"
+#include "AliADRecoParam.h"
#include "AliCTPTimeParams.h"
#include "event.h"
AliADQADataMakerRec::AliADQADataMakerRec() :
AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kAD), "AD Quality Assurance Data Maker"),
fCalibData(0x0),
+ fRecoParam(0x0),
fTrendingUpdateTime(0),
fCycleStartTime(0),
fCycleStopTime(0),
AliADQADataMakerRec::AliADQADataMakerRec(const AliADQADataMakerRec& qadm) :
AliQADataMakerRec(),
fCalibData(0x0),
+ fRecoParam(0x0),
fTrendingUpdateTime(0),
fCycleStartTime(0),
fCycleStopTime(0),
// Reset of the histogram used - to have the trend versus time -
fCalibData = GetCalibData();
+ fRecoParam = (AliADRecoParam*)GetRecoParam();
AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/CTP/CTPtiming");
if (!entry) AliFatal("CTP timing parameters are not found in OCDB !");
AliCDBEntry *entry2 = AliCDBManager::Instance()->Get("AD/Calib/TimeDelays");
if (!entry2) AliFatal("AD time delays are not found in OCDB !");
TH1F *delays = (TH1F*)entry2->GetObject();
-
+ /*/
AliCDBEntry *entry3 = AliCDBManager::Instance()->Get("AD/Calib/TimeSlewing");
if (!entry3) AliFatal("AD time slewing function is not found in OCDB !");
fTimeSlewing = (TF1*)entry3->GetObject();
- /*/
+
for(Int_t i = 0 ; i < 16; ++i) {
//Int_t board = AliADCalibData::GetBoardNumber(i);
TTimeStamp currentTime;
fCycleStartTime = currentTime.GetSec();
- // fNTotEvents = 0;
}
//____________________________________________________________________________
void AliADQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
// Detector specific actions at end of cycle
// Does the QA checking
ResetEventTrigClasses();
- //
- AliQAChecker::Instance()->Run(AliQAv1::kAD, task, list) ;
if(task == AliQAv1::kRAWS){
TTimeStamp currentTime;
fCycleStopTime = currentTime.GetSec();
+
+ Int_t nCorrelation = 0;
+ Int_t nPair = 1;
+ for(Int_t i=0;i<8;i++){
+ for(Int_t j=7;j>i;j--){
+ if( (j - i) == 4){
+ Float_t Mean = ((TH1F*)GetRawsData(kNTimeDiffADC + nCorrelation))->GetMean();
+ Float_t RMS = ((TH1F*)GetRawsData(kNTimeDiffADC + nCorrelation))->GetRMS();
+ SetRawsDataBinContent(kPairTimeDiffMean,nPair,Mean);
+ SetRawsDataBinContent(kPairTimeDiffRMS,nPair,RMS);
+ nPair++;
+ }
+ nCorrelation++;
+ }
+ }
+ nCorrelation = 0;
+ for(Int_t i=0;i<8;i++){
+ for(Int_t j=7;j>i;j--){
+ if( (j - i) == 4){
+ Float_t Mean = ((TH1F*)GetRawsData(kNTimeDiffADA + nCorrelation))->GetMean();
+ Float_t RMS = ((TH1F*)GetRawsData(kNTimeDiffADA + nCorrelation))->GetRMS();
+ SetRawsDataBinContent(kPairTimeDiffMean,nPair,Mean);
+ SetRawsDataBinContent(kPairTimeDiffRMS,nPair,RMS);
+ nPair++;
+ }
+ nCorrelation++;
+ }
+ }
+
}
for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
} else if (task == AliQAv1::kESDS) {
}
}
+ AliQAChecker::Instance()->Run(AliQAv1::kAD, task, list) ;
}
//____________________________________________________________________________
{
const Bool_t expert = kTRUE ;
const Bool_t image = kTRUE ;
-
- TH2F * h2d;
- TH1I * h1i;
- TH1F * h1d;
-
- h1i = new TH1I("H1I_Cell_Multiplicity_ADA", "Cell Multiplicity in ADA;Multiplicity (Nb of Cell);Counts", 35, 0, 35) ;
- Add2ESDsList(h1i, kCellMultiADA, !expert, image) ;
+
+ TH1I * h0 = new TH1I("H1I_Cell_Multiplicity_ADA", "Cell Multiplicity in ADA;Multiplicity (Nb of Cell);Counts", 35, 0, 35) ;
+ Add2ESDsList(h0, kCellMultiADA, !expert, image) ;
- h1i = new TH1I("H1I_Cell_Multiplicity_ADC", "Cell Multiplicity in AD;Multiplicity (Nb of Cell);Counts", 35, 0, 35) ;
- Add2ESDsList(h1i, kCellMultiADC, !expert, image) ;
+ TH1I * h1 = new TH1I("H1I_Cell_Multiplicity_ADC", "Cell Multiplicity in AD;Multiplicity (Nb of Cell);Counts", 35, 0, 35) ;
+ Add2ESDsList(h1, kCellMultiADC, !expert, image) ;
- h1d = new TH1F("H1D_BBFlag_Counters", "BB Flag Counters;Channel;Counts",64, 0, 64) ;
- Add2ESDsList(h1d, kBBFlag, !expert, image) ;
+ TH1F * h2 = new TH1F("H1D_BBFlag_Counters", "BB Flag Counters;Channel;Counts",16, 0, 16) ;
+ Add2ESDsList(h2, kBBFlag, !expert, image) ;
- h1d = new TH1F("H1D_BGFlag_Counters", "BG Flag Counters;Channel;Counts",64, 0, 64) ;
- Add2ESDsList(h1d, kBGFlag, !expert, image) ;
+ TH1F * h3 = new TH1F("H1D_BGFlag_Counters", "BG Flag Counters;Channel;Counts",16, 0, 16) ;
+ Add2ESDsList(h3, kBGFlag, !expert, image) ;
- h2d = new TH2F("H2D_Charge_Channel", "ADC Charge per channel;Channel;Charge (ADC counts)",64, 0, 64, 1024, 0, 1024) ;
- Add2ESDsList(h2d, kChargeChannel, !expert, image) ;
+ TH2F * h4 = new TH2F("H2D_Charge_Channel", "ADC Charge per channel;Channel;Charge (ADC counts)",16, 0, 16, 1024, 0, 1024) ;
+ Add2ESDsList(h4, kChargeChannel, !expert, image) ;
- h2d = new TH2F("H2D_Time_Channel", "Time per channel;Channel;Time (ns)",64, 0, 64, 400, -100, 100) ;
- Add2ESDsList(h2d, kTimeChannel, !expert, image) ;
+ TH2F * h5 = new TH2F("H2D_Time_Channel", "Time per channel;Channel;Time (ns)",16, 0, 16, 400, -100, 100) ;
+ Add2ESDsList(h5, kTimeChannel, !expert, image) ;
- h1d = new TH1F("H1D_ADA_Time", "Mean ADA Time;Time (ns);Counts",1000, -100., 100.);
- Add2ESDsList(h1d,kESDADATime, !expert, image);
+ TH1F * h6 = new TH1F("H1D_ADA_Time", "Mean ADA Time;Time (ns);Counts",1000, -100., 100.);
+ Add2ESDsList(h6,kESDADATime, !expert, image);
- h1d = new TH1F("H1D_ADC_Time", "Mean ADC Time;Time (ns);Counts",1000, -100., 100.);
- Add2ESDsList(h1d,kESDADCTime, !expert, image);
+ TH1F * h7 = new TH1F("H1D_ADC_Time", "Mean ADC Time;Time (ns);Counts",1000, -100., 100.);
+ Add2ESDsList(h7,kESDADCTime, !expert, image);
- h1d = new TH1F("H1D_Diff_Time", "Diff Time ADA - ADC;Diff Time ADA - ADC (ns);Counts",1000, -200., 200.);
- Add2ESDsList(h1d,kESDDiffTime, !expert, image);
+ TH1F * h8 = new TH1F("H1D_Diff_Time", "Diff Time ADA - ADC;Diff Time ADA - ADC (ns);Counts",1000, -200., 200.);
+ Add2ESDsList(h8,kESDDiffTime, !expert, image);
//
ClonePerTrigClass(AliQAv1::kESDS); // this should be the last line
}
while ( (ADDigit = dynamic_cast<AliADdigit *>(next())) ) {
Int_t totCharge = 0;
Int_t PMNumber = ADDigit->PMNumber();
-
- if(PMNumber<8 && ADDigit->GetBBflag()) nBBflagsADA++;
- if(PMNumber>7 && ADDigit->GetBBflag()) nBBflagsADC++;
+ if(PMNumber<8 && ADDigit->GetBBflag()) nBBflagsADC++;
+ if(PMNumber>7 && ADDigit->GetBBflag()) nBBflagsADA++;
Short_t adc[21];
for(Int_t iClock=0; iClock<21; iClock++) {
for(Int_t i=0;i<16;i++) {
FillESDsData(kChargeChannel,(Float_t) i,(Float_t) esdAD->GetAdc(i));
if (i < 8) {
- if(esdAD->BBTriggerADA(i)) FillESDsData(kBBFlag,(Float_t) i);
- if(esdAD->BGTriggerADA(i)) FillESDsData(kBGFlag,(Float_t) i);
+ if(esdAD->BBTriggerADC(i)) FillESDsData(kBBFlag,(Float_t) i);
+ if(esdAD->BGTriggerADC(i)) FillESDsData(kBGFlag,(Float_t) i);
}
else {
- if(esdAD->BBTriggerADC(i-8)) FillESDsData(kBBFlag,(Float_t) i);
- if(esdAD->BGTriggerADC(i-8)) FillESDsData(kBGFlag,(Float_t) i);
+ if(esdAD->BBTriggerADA(i-8)) FillESDsData(kBBFlag,(Float_t) i);
+ if(esdAD->BGTriggerADA(i-8)) FillESDsData(kBGFlag,(Float_t) i);
}
Float_t time = (Float_t) esdAD->GetTime(i);
FillESDsData(kTimeChannel,(Float_t) i,time);
void AliADQADataMakerRec::InitRaws()
{
// Creates RAW histograms in Raws subdir
-
+ if(!fRecoParam) fRecoParam = (AliADRecoParam*)GetRecoParam();
+
const Bool_t expert = kTRUE ;
const Bool_t saveCorr = kTRUE ;
const Bool_t image = kTRUE ;
const Int_t kNintegrator = 2;
- const Int_t kNTdcTimeBins = 1280;
- const Float_t kTdcTimeMin = 0.;
- const Float_t kTdcTimeMax = 75.;
- const Int_t kNTdcWidthBins = 256;
- const Float_t kTdcWidthMin = 0;
- const Float_t kTdcWidthMax = 200.;
- const Int_t kNChargeBins = 1024;
- const Float_t kChargeMin = 0;
- const Float_t kChargeMax = 1024;
+ const Int_t kNTdcTimeBins = fRecoParam->GetNTdcTimeBins();
+ const Float_t kTdcTimeMin = fRecoParam->GetTdcTimeMin();
+ const Float_t kTdcTimeMax = fRecoParam->GetTdcTimeMax();
+ const Int_t kNTdcWidthBins = fRecoParam->GetNTdcWidthBins();
+ const Float_t kTdcWidthMin = fRecoParam->GetTdcWidthMin();
+ const Float_t kTdcWidthMax = fRecoParam->GetTdcWidthMax();
+ const Int_t kNChargeChannelBins = fRecoParam->GetNChargeChannelBins();
+ const Int_t kNChargeSideBins = fRecoParam->GetNChargeSideBins();
+ const Int_t kNChargeCorrBins = fRecoParam->GetNChargeCorrBins();
+
+ const Float_t kChargeChannelMin = 1;
+ const Float_t kChargeChannelMax = 1+kNChargeChannelBins;
+ const Float_t kChargeSideMin = 1;
+ const Float_t kChargeSideMax = 1+kNChargeSideBins;
+ const Float_t kChargeCorrMin = 0;
+ const Float_t kChargeCorrMax = kNChargeCorrBins;
+
+ const Int_t kNTimeCorrBins = 614;
+ const Float_t kTimeCorrMin = 70.019531;
+ const Float_t kTimeCorrMax = 129.980469;
+
+ const Int_t kNTimeDiffBins = 154;
+ const Float_t kTimeDiffMin = -15.039062;
+ const Float_t kTimeDiffMax = 15.039062;
+
const Int_t kNChannelBins = 16;
const Float_t kChannelMin = 0;
const Float_t kChannelMax = 16;
- const Int_t kNPedestalBins = 200;
+
+ const Int_t kNPedestalBins = 40;
const Float_t kPedestalMin = 0;
- const Float_t kPedestalMax = 200;
+ const Float_t kPedestalMax = 40;
+
const Int_t kNPairBins = 8;
const Float_t kPairMin = 0;
const Float_t kPairMax = 8;
-
+
TH2I * h2i;
TH2F * h2d;
TH1I * h1i;
Add2RawsList(h1i,kMultiADC, !expert, image, saveCorr); iHisto++;
// Creation of Total Charge Histograms
- h1d = new TH1F("H1D_Charge_ADA", "Total Charge in ADA;Charge [ADC counts];Counts", 4000, 0, 30000) ;
+ h1d = new TH1F("H1D_Charge_ADA", "Total Charge in ADA;Charge [ADC counts];Counts", kNChargeSideBins, kChargeSideMin, kChargeSideMax) ;
Add2RawsList(h1d,kChargeADA, !expert, image, saveCorr); iHisto++;
- h1d = new TH1F("H1D_Charge_ADC", "Total Charge in ADC;Charge [ADC counts];Counts", 4000, 0, 50000) ;
+ h1d = new TH1F("H1D_Charge_ADC", "Total Charge in ADC;Charge [ADC counts];Counts", kNChargeSideBins, kChargeSideMin, kChargeSideMax) ;
Add2RawsList(h1d,kChargeADC, !expert, image, saveCorr); iHisto++;
h1d = new TH1F("H1D_Charge_AD", "Total Charge in AD;Charge [ADC counts];Counts", 4000, 0, 80000) ;
Add2RawsList(h1d,kChargeAD, !expert, image, saveCorr); iHisto++;
// Creation of Charge EoI histogram
h2d = new TH2F("H2D_ChargeEoI", "Charge Event of Interest;Channel Number;Charge [ADC counts]"
- ,kNChannelBins, kChannelMin, kChannelMax, kNChargeBins, kChargeMin, 2.*kChargeMax);
+ ,kNChannelBins, kChannelMin, kChannelMax, kNChargeChannelBins, kChargeChannelMin, kChargeChannelMax);
Add2RawsList(h2d,kChargeEoI, !expert, image, saveCorr); iHisto++;
for(Int_t iInt=0;iInt<kNintegrator;iInt++){
h2i = new TH2I(Form("H2I_Pedestal_Int%d",iInt), Form("Pedestal (Int%d);Channel;Pedestal [ADC counts]",iInt)
,kNChannelBins, kChannelMin, kChannelMax,kNPedestalBins,kPedestalMin ,kPedestalMax );
Add2RawsList(h2i,(iInt == 0 ? kPedestalInt0 : kPedestalInt1), !expert, image, saveCorr); iHisto++;
+
+ h2d = new TH2F(Form("H2D_PedestalDiff_Int%d",iInt), Form("Pedestal difference Online - OCDB (Int%d);Channel; Pedestal Online - OCDB",iInt)
+ ,kNChannelBins, kChannelMin, kChannelMax,81,-40.5,40.5);
+ Add2RawsList(h2d,(iInt == 0 ? kPedestalDiffInt0 : kPedestalDiffInt1), !expert, image, saveCorr); iHisto++;
// Creation of Charge EoI histograms
h2i = new TH2I(Form("H2I_ChargeEoI_Int%d",iInt), Form("Charge EoI (Int%d);Channel;Charge [ADC counts]",iInt)
- ,kNChannelBins, kChannelMin, kChannelMax, kNChargeBins, kChargeMin, kChargeMax);
+ ,kNChannelBins, kChannelMin, kChannelMax, kNChargeChannelBins, kChargeChannelMin, kChargeChannelMax);
Add2RawsList(h2i,(iInt == 0 ? kChargeEoIInt0 : kChargeEoIInt1), !expert, image, saveCorr); iHisto++;
}
h1d = new TH1F("H1D_ADC_Time", "ADC Time;Time [ns];Counts",kNTdcTimeBins, kTdcTimeMin, kTdcTimeMax);
Add2RawsList(h1d,kADCTime, !expert, image, saveCorr); iHisto++;
- h1d = new TH1F("H1D_Diff_Time","Diff ADA-ADC Time;Time [ns];Counts",kNTdcTimeBins, -50., 50.);
+ h1d = new TH1F("H1D_Diff_Time","Diff ADA-ADC Time;Time [ns];Counts",kNTimeDiffBins,kTimeDiffMin,kTimeDiffMax);
Add2RawsList(h1d,kDiffTime, !expert, image, saveCorr); iHisto++;
h2d = new TH2F("H2D_TimeADA_ADC", "Mean Time in ADC versus ADA;Time ADA [ns];Time ADC [ns]", kNTdcTimeBins/8, kTdcTimeMin,kTdcTimeMax,kNTdcTimeBins/8, kTdcTimeMin,kTdcTimeMax) ;
Add2RawsList(h2d,kTimeADAADC, !expert, image, saveCorr); iHisto++;
+ h2d = new TH2F("H2D_TimeSlewingOff", "Time Vs Charge (no slewing correction);Leading Time[ns];Charge [ADC counts]", kNTdcTimeBins, kTdcTimeMin, kTdcTimeMax, kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax) ;
+ Add2RawsList(h2d,kTimeSlewingOff, !expert, image, saveCorr); iHisto++;
+
+ h2d = new TH2F("H2D_TimeSlewingOn", "Time Vs Charge (after slewing correction);Leading Time[ns];Charge [ADC counts]", kNTdcTimeBins, kTdcTimeMin, kTdcTimeMax, kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax) ;
+ Add2RawsList(h2d,kTimeSlewingOn, !expert, image, saveCorr); iHisto++;
+
+ h2d = new TH2F("H2D_WidthSlewing", "Width Vs Charge ;Time Width [ns];Charge [ADC counts]", kNTdcWidthBins, kTdcWidthMin, kTdcWidthMax, kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax) ;
+ Add2RawsList(h2d,kWidthSlewing, !expert, image, saveCorr); iHisto++;
+
//Creation of pair coincidence histograms
- h1i = new TH1I("H1I_MultiCoincidence_ADA", "Number of coincidences in ADA;# of Coincidences;Entries", 5, 0, 5) ;
+ h1i = new TH1I("H1I_MultiCoincidence_ADA", "Number of coincidences in ADA;# of Coincidences;Entries", 5, -0.5, 4.5) ;
Add2RawsList(h1i,kNCoincADA, !expert, image, saveCorr); iHisto++;
- h1i = new TH1I("H1I_MultiCoincidence_ADC", "Number of coincidences in ADC;# of Coincidences;Entries", 5, 0, 5) ;
+ h1i = new TH1I("H1I_MultiCoincidence_ADC", "Number of coincidences in ADC;# of Coincidences;Entries", 5, -0.5, 4.5) ;
Add2RawsList(h1i,kNCoincADC, !expert, image, saveCorr); iHisto++;
- h2d = new TH2F("H2D_Pair_Diff_Time","Diff Pair Time;Pair number;Time [ns]",kNPairBins, kPairMin, kPairMax,kNTdcTimeBins, -50., 50.);
- Add2RawsList(h2d,kPairDiffTime, !expert, image, saveCorr); iHisto++;
+ h1d = new TH1F("H1D_Pair_TimeDiffMean","Time difference mean for coincidence pair [ns];Pair number;Time mean [ns]",kNPairBins, kPairMin, kPairMax);
+ Add2RawsList(h1d,kPairTimeDiffMean, expert, image, saveCorr); iHisto++;
- h2d = new TH2F("H2D_Pair_Diff_Charge","Diff Pair Charge;Pair number;Charge [ADC counts]",kNPairBins, kPairMin, kPairMax, 2*kNChargeBins, -kChargeMax, kChargeMax);
- Add2RawsList(h2d,kPairDiffCharge, !expert, image, saveCorr); iHisto++;
+ h1d = new TH1F("H1D_Pair_TimeDiffRMS","Time difference RMS for coincidence pair [ns];Pair number;Time RMS [ns]",kNPairBins, kPairMin, kPairMax);
+ Add2RawsList(h1d,kPairTimeDiffRMS, expert, image, saveCorr); iHisto++;
//Creation of Clock histograms
h2d = new TH2F("H2D_BBFlagVsClock", "BB-Flags Versus LHC-Clock;Channel;LHC Clocks",kNChannelBins, kChannelMin, kChannelMax,21, -10.5, 10.5 );
h2d = new TH2F("H2D_BGFlagPerChannel", "BG-Flags Versus Channel;Channel;BG Flags Count",kNChannelBins, kChannelMin, kChannelMax,22,-0.5,21.5);
Add2RawsList(h2d,kBGFlagsPerChannel, !expert, image, saveCorr); iHisto++;
+ h1d = new TH1F("H1D_FlagNoTime", "Fraction of events with BB/BG flag but no time measurement;Channel;Entries",kNChannelBins, kChannelMin, kChannelMax);
+ Add2RawsList(h1d,kFlagNoTime, expert, image, saveCorr); iHisto++;
+
+ h1d = new TH1F("H1D_TimeNoFlag", "Fraction of events with time measurement but no BB/BG flag;Channel;Entries",kNChannelBins, kChannelMin, kChannelMax);
+ Add2RawsList(h1d,kTimeNoFlag, expert, image, saveCorr); iHisto++;
+
+ //Correlation histograms
+ Int_t nCorrelation = 0;
+ for(Int_t i=0;i<8;i++){
+ for(Int_t j=7;j>i;j--){
+ h2d = new TH2F(Form("ChargeCorr/H2D_kNChargeCorrADA_%d_%d",i,j),Form("Charge Correlation ADA module%d - module%d",i,j),kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax,kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax);
+ Add2RawsList(h2d,kNChargeCorrADA+nCorrelation, expert, image, saveCorr); iHisto++; nCorrelation++;
+ }
+ }
+ nCorrelation = 0;
+ for(Int_t i=0;i<8;i++){
+ for(Int_t j=7;j>i;j--){
+ h2d = new TH2F(Form("ChargeCorr/H2D_kNChargeCorrADC_%d_%d",i,j),Form("Charge Correlation ADC module%d - module%d",i,j),kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax,kNChargeCorrBins, kChargeCorrMin, kChargeCorrMax);
+ Add2RawsList(h2d,kNChargeCorrADC+nCorrelation, expert, image, saveCorr); iHisto++; nCorrelation++;
+ }
+ }
+ nCorrelation = 0;
+ for(Int_t i=0;i<8;i++){
+ for(Int_t j=7;j>i;j--){
+ h2d = new TH2F(Form("TimeCorr/H2D_kNTimeCorrADA_%d_%d",i,j),Form("Time Correlation ADA module%d - module%d",i,j),kNTimeCorrBins,kTimeCorrMin,kTimeCorrMax,kNTimeCorrBins,kTimeCorrMin,kTimeCorrMax);
+ Add2RawsList(h2d,kNTimeCorrADA+nCorrelation, expert, image, saveCorr); iHisto++; nCorrelation++;
+ }
+ }
+ nCorrelation = 0;
+ for(Int_t i=0;i<8;i++){
+ for(Int_t j=7;j>i;j--){
+ h2d = new TH2F(Form("TimeCorr/H2D_kNTimeCorrADC_%d_%d",i,j),Form("Time Correlation ADC module%d - module%d",i,j),kNTimeCorrBins,kTimeCorrMin,kTimeCorrMax,kNTimeCorrBins,kTimeCorrMin,kTimeCorrMax);
+ Add2RawsList(h2d,kNTimeCorrADC+nCorrelation, expert, image, saveCorr); iHisto++; nCorrelation++;
+ }
+ }
+ nCorrelation = 0;
+ for(Int_t i=0;i<8;i++){
+ for(Int_t j=7;j>i;j--){
+ h1d = new TH1F(Form("TimeDiff/H1D_kNTimeDiffADA_%d_%d",i,j),Form("Time Difference ADA module%d - module%d",i,j),kNTimeDiffBins,kTimeDiffMin,kTimeDiffMax);
+ Add2RawsList(h1d,kNTimeDiffADA+nCorrelation, expert, image, saveCorr); iHisto++; nCorrelation++;
+ }
+ }
+ nCorrelation = 0;
+ for(Int_t i=0;i<8;i++){
+ for(Int_t j=7;j>i;j--){
+ h1d = new TH1F(Form("TimeDiff/H1D_kNTimeDiffADC_%d_%d",i,j),Form("Time Difference ADC module%d - module%d",i,j),kNTimeDiffBins,kTimeDiffMin,kTimeDiffMax);
+ Add2RawsList(h1d,kNTimeDiffADC+nCorrelation, expert, image, saveCorr); iHisto++; nCorrelation++;
+ }
+ }
+
AliDebug(AliQAv1::GetQADebugLevel(), Form("%d Histograms has been added to the Raws List",iHisto));
//
ClonePerTrigClass(AliQAv1::kRAWS); // this should be the last line
Int_t iFlag=0;
Int_t pedestal;
+ Float_t OCDBdiff;
Int_t integrator[16];
Bool_t flagBB[16];
Bool_t flagBG[16];
for(Int_t iChannel=0; iChannel<16; iChannel++) { // BEGIN : Loop over channels
- offlineCh = rawStream->GetOfflineChannel(iChannel);
+ offlineCh = kOfflineChannel[iChannel];
// Fill Pedestal histograms
for(Int_t j=15; j<21; j++){
pedestal= (Int_t) rawStream->GetPedestal(iChannel, j);
integrator[offlineCh] = rawStream->GetIntegratorFlag(iChannel, j);
+ OCDBdiff = pedestal - fCalibData->GetPedestal(offlineCh+16*integrator[offlineCh]);
FillRawsData((integrator[offlineCh] == 0 ? kPedestalInt0 : kPedestalInt1),offlineCh,pedestal);
+ FillRawsData((integrator[offlineCh] == 0 ? kPedestalDiffInt0 : kPedestalDiffInt1),offlineCh,OCDBdiff);
}
}
-
// Fill Charge EoI histograms
adc[offlineCh] = 0.0;
-
// Search for the maximum charge in the train of 21 LHC clocks
// regardless of the integrator which has been operated:
Float_t maxadc = 0;
Int_t k = offlineCh+16*iIntegrator;
adcPedSub[iClock] = rawStream->GetPedestal(iChannel,iClock) - fCalibData->GetPedestal(k);
- // if(adcPedSub[iClock] <= GetRecoParam()->GetNSigmaPed()*fCalibData->GetSigma(k)) {
- if(adcPedSub[iClock] <= 2.*fCalibData->GetSigma(k)) {
+ if(adcPedSub[iClock] <= fRecoParam->GetNSigmaPed()*fCalibData->GetSigma(k)) {
adcPedSub[iClock] = 0;
continue;
}
- // if(iClock < GetRecoParam()->GetStartClock() || iClock > GetRecoParam()->GetEndClock()) continue;
- if(iClock < 8 || iClock > 12) continue;
+
+ if(iClock < fRecoParam->GetStartClock() || iClock > fRecoParam->GetEndClock()) continue;
if(adcPedSub[iClock] > maxadc) {
maxadc = adcPedSub[iClock];
imax = iClock;
}
//printf(Form("Channel %d (online), %d (offline)\n",iChannel,j));
if (imax != -1) {
- // Int_t start = imax - GetRecoParam()->GetNPreClocks();
- Int_t start = imax - 2;
+ Int_t start = imax - fRecoParam->GetNPreClocks();
if (start < 0) start = 0;
- // Int_t end = imax + GetRecoParam()->GetNPostClocks();
- Int_t end = imax + 1;
+ Int_t end = imax + fRecoParam->GetNPostClocks();
if (end > 20) end = 20;
for(Int_t iClock = start; iClock <= end; iClock++) {
adc[offlineCh] += adcPedSub[iClock];
// Fill HPTDC Time Histograms
- //timeCorr[offlineCh] = CorrectLeadingTime(offlineCh,time[offlineCh],adc[offlineCh]);
- timeCorr[offlineCh] = time[offlineCh];
+ timeCorr[offlineCh] = CorrectLeadingTime(offlineCh,time[offlineCh],adc[offlineCh]);
+ //timeCorr[offlineCh] = time[offlineCh];
//const Float_t p1 = 2.50; // photostatistics term in the time resolution
//const Float_t p2 = 3.00; // sleewing related term in the time resolution
}
FillRawsData(kBBFlagsPerChannel, offlineCh,nbbFlag);
FillRawsData(kBGFlagsPerChannel, offlineCh,nbgFlag);
+ if((nbbFlag+nbgFlag)>0 && time[offlineCh]<1e-6)FillRawsData(kFlagNoTime,offlineCh);
+ if((nbbFlag+nbgFlag)==0 && time[offlineCh]>1e-6)FillRawsData(kTimeNoFlag,offlineCh);
+
+ FillRawsData(kTimeSlewingOff,time[offlineCh],adc[offlineCh]);
+ FillRawsData(kTimeSlewingOn,timeCorr[offlineCh],adc[offlineCh]);
+ FillRawsData(kWidthSlewing,width[offlineCh],adc[offlineCh]);
FillRawsData(kHPTDCTime,offlineCh,timeCorr[offlineCh]);
FillRawsData(kWidth,offlineCh,width[offlineCh]);
}// END of Loop over channels
- for(Int_t iChannel=0; iChannel<4; iChannel++) {//Loop over pairs ADC
- offlineCh = rawStream->GetOfflineChannel(iChannel);
- Float_t sigma = fCalibData->GetSigma(offlineCh+16*integrator[offlineCh]);
- Float_t sigma4 = fCalibData->GetSigma(offlineCh+4+16*integrator[offlineCh]);
- if( ((adc[offlineCh] > 2.*sigma) && !(time[offlineCh] <1.e-6)) && ((adc[offlineCh+4] > 2.*sigma4) && !(time[offlineCh+4] <1.e-6)) ){
- pmulADC++;
- if(timeCorr[offlineCh]<-1024.+1.e-6 || timeCorr[offlineCh+4]<-1024.+1.e-6) pDiffTime = -1024.;
- else pDiffTime = timeCorr[offlineCh+4] - timeCorr[offlineCh];
- FillRawsData(kPairDiffTime,iPair,pDiffTime);
+ //Correlation Cside
+ Int_t nCorrelation = 0;
+ for(Int_t iChannel=0; iChannel<8; iChannel++) {
+ for(Int_t jChannel=7; jChannel>iChannel; jChannel--) {
+ FillRawsData(kNChargeCorrADC+nCorrelation,adc[iChannel],adc[jChannel]);
+ FillRawsData(kNTimeCorrADC+nCorrelation,time[iChannel],time[jChannel]);
+ if(time[iChannel]>1e-6 && time[jChannel]>1e-6) FillRawsData(kNTimeDiffADC+nCorrelation,time[iChannel]-time[jChannel]);
+ nCorrelation++;
}
- FillRawsData(kPairDiffCharge,iPair,TMath::Abs(adc[offlineCh]-adc[offlineCh+4]));
- iPair++;
}
- for(Int_t iChannel=8; iChannel<12; iChannel++) {//Loop over pairs ADA
- offlineCh = rawStream->GetOfflineChannel(iChannel);
- Float_t sigma = fCalibData->GetSigma(offlineCh+16*integrator[offlineCh]);
- Float_t sigma4 = fCalibData->GetSigma(offlineCh+4+16*integrator[offlineCh]);
- if( ((adc[offlineCh] > 2.*sigma) && !(time[offlineCh] <1.e-6)) && ((adc[offlineCh+4] > 2.*sigma4) && !(time[offlineCh+4] <1.e-6)) ){
- pmulADA++;
- if(timeCorr[offlineCh]<-1024.+1.e-6 || timeCorr[offlineCh+4]<-1024.+1.e-6) pDiffTime = -1024.;
- else pDiffTime = timeCorr[offlineCh+4] - timeCorr[offlineCh];
- FillRawsData(kPairDiffTime,iPair,pDiffTime);
+ //Correlation Aside
+ nCorrelation = 0;
+ for(Int_t iChannel=8; iChannel<16; iChannel++) {
+ for(Int_t jChannel=15; jChannel>iChannel; jChannel--) {
+ FillRawsData(kNChargeCorrADA+nCorrelation,adc[iChannel],adc[jChannel]);
+ FillRawsData(kNTimeCorrADA+nCorrelation,time[iChannel],time[jChannel]);
+ if(time[iChannel]>1e-6 && time[jChannel]>1e-6) FillRawsData(kNTimeDiffADA+nCorrelation,time[iChannel]-time[jChannel]);
+ nCorrelation++;
}
- FillRawsData(kPairDiffCharge,iPair,TMath::Abs(adc[offlineCh]-adc[offlineCh+4]));
- iPair++;
- }
+ }
+
+ for(Int_t iChannel=0; iChannel<4; iChannel++) {//Loop over pairs
+ if(flagBB[iChannel] && flagBB[iChannel+4]) pmulADC++;
+ if(flagBB[iChannel+8] && flagBB[iChannel+12]) pmulADA++;
+ }
FillRawsData(kNCoincADA,pmulADA);
FillRawsData(kNCoincADC,pmulADC);
}
//____________________________________________________________________________
-Float_t AliADQADataMakerRec::CorrectLeadingTime(Int_t /*i*/, Float_t time, Float_t /*adc*/) const
+Float_t AliADQADataMakerRec::CorrectLeadingTime(Int_t /*i*/, Float_t time, Float_t adc) const
{
// Correct the leading time
// for slewing effect and
// Slewing correction
//Float_t thr = fCalibData->GetCalibDiscriThr(i,kTRUE);
//AliInfo(Form("adc %f thr %f dtime %f ", adc,thr,fTimeSlewing->Eval(adc/thr)));
- //time -= fTimeSlewing->Eval(adc/thr);
+ time -= fTimeSlewing->Eval(adc);
return time;
}