TObject(),
fGeo(0),
fAdcMin(0),
- fAdcMax(20),
+ fAdcMax(21),
fDetector(-1),
fNumberOfTimeBins(0),
fCalRocArrayMean(540),
// Attention: the entry counter of the histogram is not increased
// this means that e.g. the colz draw option gives an empty plot
Int_t bin = 0;
- if ( !(((Int_t)csignal>fAdcMax ) || ((Int_t)csignal<fAdcMin)) )
+ if ( !(((Int_t)csignal>=fAdcMax ) || ((Int_t)csignal<fAdcMin)) )
bin = (nbchannel+1)*(fAdcMax-fAdcMin+2)+((Int_t)csignal-fAdcMin+1);
+
+ //GetHisto(icdet,kTRUE)->Fill(csignal,nbchannel);
GetHisto(icdet,kTRUE)->GetArray()[bin]++;
Int_t iCol = rawStream->GetCol(); // current col
- Int_t iADC = 21-rawStream->GetADC(); // current ADC
+ Int_t iADC = 21-rawStream->GetADC(); // current ADC
Int_t col = 0;
if(iADC == 1) col = 1;
else {
//Bool_t shared = rawStream->IsCurrentPadShared();
//printf("ADC %d, iCol %d, col %d, mcm %d, shared %d\n",iADC,iCol,col,mcm,(Int_t)shared);
- Int_t iTimeBin = rawStream->GetTimeBin(); // current time bin
Int_t *signal = rawStream->GetSignals(); // current ADC signal
Int_t nbtimebin = rawStream->GetNumberOfTimeBins(); // number of time bins read from data
}
fNumberOfTimeBins = nbtimebin;
- Int_t fin = TMath::Min(nbtimebin,(iTimeBin+3));
- Int_t n = 0;
-
- for(Int_t k = iTimeBin; k < fin; k++){
- if(signal[n]>0) UpdateHisto(idetector,iRow,iCol,signal[n],iRowMax,col,mcm);
- n++;
+ for(Int_t k = 0; k < fNumberOfTimeBins; k++){
+ if(signal[k]>0) UpdateHisto(idetector,iRow,iCol,signal[k],iRowMax,col,mcm);
}
withInput = 2;
if(col > 1) mcm -= 1;
if(col ==1) mcm += 1;
- Int_t iTimeBin = rawStream->GetTimeBin(); // current time bin
Int_t *signal = rawStream->GetSignals(); // current ADC signal
Int_t nbtimebin = rawStream->GetNumberOfTimeBins(); // number of time bins read from data
- Int_t fin = TMath::Min(nbtimebin,(iTimeBin+3));
- Int_t n = 0;
-
+
//printf("det %d, row %d, signal[0] %d, signal[1] %d, signal [2] %d\n", idetector, iRow, signal[0], signal[1], signal[2]);
- for(Int_t k = iTimeBin; k < fin; k++){
- if(signal[n]>0) {
- UpdateHisto(idetector,iRow,iCol,signal[n],iRowMax,col,mcm);
+ for(Int_t k = 0; k < nbtimebin; k++){
+ if(signal[k]>0) {
+ UpdateHisto(idetector,iRow,iCol,signal[k],iRowMax,col,mcm);
//printf("Update with det %d, row %d, col %d, signal %d, rowmax %d, col %d, mcm %d\n",idetector,iRow,iCol,signal[n],iRowMax,col,mcm);
}
- n++;
}
withInput = 2;
}
//_____________________________________________________________________
-Bool_t AliTRDCalibPadStatus::TestEventHisto(Int_t nevent, Int_t sm) /*FOLD00*/
+Bool_t AliTRDCalibPadStatus::TestEventHisto(Int_t nevent, Int_t sm, Int_t ch) /*FOLD00*/
{
//
// Test event loop
gRandom->SetSeed(0);
for (Int_t ism=sm; ism<sm+1; ism++){
- for (Int_t ich=0; ich < 5; ich++){
+ for (Int_t ich=ch; ich < ch+1; ich++){
for (Int_t ipl=0; ipl < 6; ipl++){
for(Int_t irow = 0; irow < fGeo->GetRowMax(ipl,ich,ism); irow++){
for(Int_t icol = 0; icol < fGeo->GetColMax(ipl); icol++){
for (Int_t iTimeBin=0; iTimeBin<(30*nevent); iTimeBin++){
- Int_t signal=(Int_t)(gRandom->Gaus(10.0,1.2));
+ Int_t signal=TMath::Nint(gRandom->Gaus(10,1.5));
if ( signal>0 )UpdateHisto((ipl+ich*6+ism*6*5),irow,icol,signal,fGeo->GetRowMax(ipl,ich,ism),0,0);
}
}
// if force is true create a new histogram if it doesn't exist allready
//
TObjArray *arr = &fHistoArray;
- return GetHisto(det, arr, fAdcMax-fAdcMin, fAdcMin, fAdcMax, "Pedestal", force);
+ return GetHisto(det, arr, fAdcMax-fAdcMin, fAdcMin-0.5, fAdcMax-0.5, "Pedestal", force);
}
//_____________________________________________________________________
Int_t nbinsAdc = fAdcMax-fAdcMin;
- TVectorD param(3);
+ TVectorD param(4);
TMatrixD dummy(3,3);
Float_t *arrayHP=0;
continue;
}
+ //printf("Entries for %d\n",idet);
+
AliTRDCalROC *rocMean = GetCalRocMean(idet,kTRUE);
AliTRDCalROC *rocRMS = GetCalRocRMS(idet,kTRUE);
for (Int_t iChannel=0; iChannel<nChannels; iChannel++){
Int_t offset = (nbinsAdc+2)*(iChannel+1)+1;
- Double_t ret = AliMathBase::FitGaus(arrayHP+offset,nbinsAdc,fAdcMin,fAdcMax,¶m,&dummy);
- // if the fitting failed set noise and pedestal to 0
+ Double_t ret = AliMathBase::FitGaus(arrayHP+offset,nbinsAdc,fAdcMin-0.5,fAdcMax-0.5,¶m,&dummy);
+ // if the fitting failed set noise and pedestal to 0
if ((ret==-4) || (ret==-1) || (ret==-2)) {
param[1]=0.0;
param[2]=0.0;
for (Int_t iChannel=shift; iChannel<total; iChannel++){
Int_t offset = (nbinsAdc+2)*(iChannel+1)+1;
- Double_t ret = AliMathBase::FitGaus(arrayHP+offset,nbinsAdc,fAdcMin,fAdcMax,¶m,&dummy);
+ Double_t ret = AliMathBase::FitGaus(arrayHP+offset,nbinsAdc,fAdcMin-0.5,fAdcMax-0.5,¶m,&dummy);
// if the fitting failed set noise and pedestal to 0
if ((ret==-4) || (ret==-1) || (ret==-2)) {
param[1]=0.0;
}
// Some parameters
- fTimeMax = cal->GetNumberOfTimeBins();
- fSf = parCom->GetSamplingFrequency();
- fRelativeScale = 20;
+ fTimeMax = cal->GetNumberOfTimeBins();
+ fSf = parCom->GetSamplingFrequency();
+ fRelativeScale = 20;
+ fNumberClustersf = fTimeMax;
+ fNumberClusters = (Int_t)(0.6*fTimeMax);
//calib object from database used for reconstruction
if(fCalDetGain) delete fCalDetGain;
///////////////////////////////////////
Int_t row = cl->GetPadRow();
Int_t col = cl->GetPadCol();
- CheckGoodTracklet(detector,row,col);
+ CheckGoodTrackletV1(cl);
Int_t group[2] = {0,0};
if(fCH2dOn) group[0] = CalculateCalibrationGroup(0,row,col);
if(fPH2dOn) group[1] = CalculateCalibrationGroup(1,row,col);
// Store the info bis of the tracklet
Int_t row = cl->GetPadRow();
Int_t col = cl->GetPadCol();
- CheckGoodTracklet(detector,row,col);
+ CheckGoodTrackletV1(cl);
Int_t group[2] = {0,0};
if(fCH2dOn) group[0] = CalculateCalibrationGroup(0,row,col);
if(fPH2dOn) group[1] = CalculateCalibrationGroup(1,row,col);
// Pad row col stuff: see if masked or not
///////////////////////////////////////////////////////////////////////////////////////
//_____________________________________________________________________________
-void AliTRDCalibraFillHisto::CheckGoodTracklet(Int_t detector, Int_t row, Int_t col)
+void AliTRDCalibraFillHisto::CheckGoodTrackletV1(AliTRDcluster *cl)
+{
+ //
+ // See if we are not near a masked pad
+ //
+
+ if(cl->IsMasked()) fGoodTracklet = kFALSE;
+
+
+}
+//_____________________________________________________________________________
+void AliTRDCalibraFillHisto::CheckGoodTrackletV0(Int_t detector, Int_t row, Int_t col)
{
//
// See if we are not near a masked pad
fMCMPrevious = -1;
fROBPrevious = -1;
Int_t nbtimebin = 0;
- Int_t baseline = 0;
+ Int_t baseline = 10;
if(!nocheck){
Int_t idetector = rawStream->GetDet(); // current detector
Int_t imcm = rawStream->GetMCM(); // current MCM
Int_t irob = rawStream->GetROB(); // current ROB
-
+
+ //printf("Detector %d\n",idetector);
+
if((fDetectorPreviousTrack != idetector) && (fDetectorPreviousTrack != -1)){
// Fill
if((fTimeMax != 0) && (nbtimebin != fTimeMax)) return 0;
fTimeMax = nbtimebin;
- baseline = rawStream->GetCommonAdditive(); // common additive baseline
-
- Int_t iTimeBin = rawStream->GetTimeBin(); // current time bin
+ //baseline = rawStream->GetCommonAdditive(); // common additive baseline
+ fNumberClustersf = fTimeMax;
+ fNumberClusters = (Int_t)(0.6*fTimeMax);
+
+
Int_t *signal = rawStream->GetSignals(); // current ADC signal
Int_t col = rawStream->GetCol();
Int_t row = rawStream->GetRow();
//printf("detector %d, signal[0] %d, signal[1] %d, signal[2] %d, baseline %d\n",idetector,signal[0],signal[1],signal[2], baseline);
- Int_t fin = TMath::Min(fTimeMax,(iTimeBin+3));
- Int_t n = 0;
- for(Int_t itime = iTimeBin; itime < fin; itime++){
- phvalue[row][col][itime] = signal[n]-baseline;
- n++;
+ for(Int_t itime = 0; itime < nbtimebin; itime++){
+ phvalue[row][col][itime] = signal[itime]-baseline;
}
}
Int_t imcm = rawStream->GetMCM(); // current MCM
Int_t irob = rawStream->GetROB(); // current ROB
+ //printf("Detector %d\n",idetector);
+
if((fDetectorPreviousTrack != idetector) && (fDetectorPreviousTrack != -1)){
// Fill
fMCMPrevious = imcm;
fROBPrevious = irob;
- baseline = rawStream->GetCommonAdditive(); // common baseline
+ //baseline = rawStream->GetCommonAdditive(); // common baseline
fTimeMax = rawStream->GetNumberOfTimeBins(); // number of time bins read from data
- Int_t iTimeBin = rawStream->GetTimeBin(); // current time bin
+ fNumberClustersf = fTimeMax;
+ fNumberClusters = (Int_t)(0.6*fTimeMax);
Int_t *signal = rawStream->GetSignals(); // current ADC signal
Int_t col = rawStream->GetCol();
Int_t row = rawStream->GetRow();
- Int_t fin = TMath::Min(fTimeMax,(iTimeBin+3));
- Int_t n = 0;
-
+
//printf("detector %d, signal[0] %d, signal[1] %d, signal[2] %d, baseline %d\n",idetector,signal[0],signal[1],signal[2], baseline);
- for(Int_t itime = iTimeBin; itime < fin; itime++){
- phvalue[row][col][itime] = signal[n]-baseline;
- n++;
+ for(Int_t itime = 0; itime < fTimeMax; itime++){
+ phvalue[row][col][itime] = signal[itime]-baseline;
}
}
fROBPrevious = -1;
Int_t row = -1;
Int_t nbtimebin = 0;
- Int_t baseline = 0;
+ Int_t baseline = 10;
if(!nocheck){
if(nbtimebin == 0) return 0;
if((fTimeMax != 0) && (nbtimebin != fTimeMax)) return 0;
fTimeMax = nbtimebin;
+ fNumberClustersf = fTimeMax;
+ fNumberClusters = (Int_t)(0.6*fTimeMax);
param->SetTimeRange(0,fTimeMax);
- baseline = rawStream->GetCommonAdditive(); // common additive baseline
+ //baseline = rawStream->GetCommonAdditive(); // common additive baseline
- Int_t iTimeBin = rawStream->GetTimeBin(); // current time bin
Int_t *signal = rawStream->GetSignals(); // current ADC signal
Int_t adc = rawStream->GetADC();
//printf("detector %d, signal[0] %d, signal[1] %d, signal[2] %d, baseline %d\n",idetector,signal[0],signal[1],signal[2], baseline);
-
- Int_t fin = TMath::Min(fTimeMax,(iTimeBin+3));
- Int_t n = 0;
- for(Int_t itime = iTimeBin; itime < fin; itime++){
- mcm.SetADC(adc,itime,(signal[n]-baseline));
- n++;
+ for(Int_t itime = 0; itime < nbtimebin; itime++){
+ mcm.SetADC(adc,itime,(signal[itime]-baseline));
}
}
fMCMPrevious = imcm;
fROBPrevious = irob;
- baseline = rawStream->GetCommonAdditive(); // common baseline
+ //baseline = rawStream->GetCommonAdditive(); // common baseline
fTimeMax = rawStream->GetNumberOfTimeBins(); // number of time bins read from data
+ fNumberClustersf = fTimeMax;
+ fNumberClusters = (Int_t)(0.6*fTimeMax);
param->SetTimeRange(0,fTimeMax);
- Int_t iTimeBin = rawStream->GetTimeBin(); // current time bin
Int_t *signal = rawStream->GetSignals(); // current ADC signal
Int_t adc = rawStream->GetADC();
-
- Int_t fin = TMath::Min(fTimeMax,(iTimeBin+3));
- Int_t n = 0;
-
+
//printf("detector %d, signal[0] %d, signal[1] %d, signal[2] %d, baseline %d\n",idetector,signal[0],signal[1],signal[2], baseline);
- for(Int_t itime = iTimeBin; itime < fin; itime++){
- mcm.SetADC(adc,itime,(signal[n]-baseline));
- n++;
+ for(Int_t itime = 0; itime < fTimeMax; itime++){
+ mcm.SetADC(adc,itime,(signal[itime]-baseline));
}
}
Int_t used = 1;
- fGoodTracklet = kTRUE;
+ //fGoodTracklet = kTRUE;
// Localisation of the Xbins involved
Int_t idect = trk->GetDetector();
Int_t idectrue = trk->GetDetector();
- idect = 0;
+ //idect = 0;
Int_t nbclusters = trk->GetNclusters();
Int_t time = trk->GetClusterTime(icl);
Int_t col = trk->GetClusterCol(icl);
- CheckGoodTracklet(idect,row,col);
+ //CheckGoodTrackletV0(idect,row,col);
amp[0] = trk->GetClusterADC(icl)[0] * correction;
amp[1] = trk->GetClusterADC(icl)[1] * correction;
Int_t idect = fDetectorPreviousTrack;
+ //printf("Enter Detector %d\n",fDetectorPreviousTrack);
Double_t sum[36];
for(Int_t tb = 0; tb < 36; tb++){
sum[tb] = 0.0;
}
- fGoodTracklet = kTRUE;
- fDetectorPreviousTrack = 0;
+ //fGoodTracklet = kTRUE;
+ //fDetectorPreviousTrack = 0;
///////////////////////////
//printf("imaxRow %d, imaxCol %d, fTimeMax %d, integralMax %f\n",imaxRow,imaxCol,fTimeMax, integralMax);
if((imaxRow == 0) || (imaxCol == 0)) used=1;
- CheckGoodTracklet(fDetectorPreviousTrack,imaxRow,imaxCol);
- if(!fGoodTracklet) used = 1;;
+ //CheckGoodTrackletV0(fDetectorPreviousTrack,imaxRow,imaxCol);
+ //if(!fGoodTracklet) used = 1;;
// /////////////////////////////////////////////////////
// sum ober 2 row and 4 pad cols for each time bins
//((TH2I *)GetCH2d()->Fill(sumcharge/30.0,fDetectorPreviousTrack));
used = 2;
+ //printf("Pass Detector %d\n",fDetectorPreviousTrack);
+
}
return used;