Bug fix in chamber status (Julian)
authorcblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 Dec 2011 15:28:04 +0000 (15:28 +0000)
committercblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 Dec 2011 15:28:04 +0000 (15:28 +0000)
TRD/AliTRDCalibChamberStatus.cxx
TRD/AliTRDCalibChamberStatus.h
TRD/AliTRDPreprocessorOffline.cxx
TRD/AliTRDPreprocessorOffline.h

index 08d41e2..8f90aca 100644 (file)
@@ -410,7 +410,7 @@ Bool_t AliTRDCalibChamberStatus::TestEventHisto(Int_t nevent) /*FOLD00*/
 
 }
 //_____________________________________________________________________
-void AliTRDCalibChamberStatus::AnalyseHisto(Int_t limit) /*FOLD00*/
+void AliTRDCalibChamberStatus::AnalyseHisto(Int_t limit, Double_t chamberlimit) /*FOLD00*/
 {
   //
   //  Create the AliTRDCalChamberStatus according to the fHnSparseI
@@ -429,7 +429,7 @@ void AliTRDCalibChamberStatus::AnalyseHisto(Int_t limit) /*FOLD00*/
     mean+=fHnSparseI->GetBinContent(bin,coord2);
   }
   if(fHnSparseI->GetNbins() > 0.0) mean/=fHnSparseI->GetNbins();
-  //printf(" mean tracklets per halfchamber %f \n",mean);
+  //printf(" mean tracklets per halfchamber %.3e \n",mean);
   if((fCounterEventNotEmpty < limit) && (mean < limit)) {
     // Say all good
     for (Int_t idet=0; idet<540; idet++) {
@@ -449,12 +449,15 @@ void AliTRDCalibChamberStatus::AnalyseHisto(Int_t limit) /*FOLD00*/
   Int_t coord[4];
   for(Int_t bin = 0; bin < fHnSparseI->GetNbins(); bin++) {
     
-    //Double_t content = fHnSparseI->GetBinContent(bin,coord);
-    fHnSparseI->GetBinContent(bin,coord);
-    // layer, stack, sector
+    Double_t content = fHnSparseI->GetBinContent(bin,coord);
+    
+               // layer, stack, sector
     Int_t detector = AliTRDgeometry::GetDetector(coord[1]-1,coord[2]-1,coord[0]-1);
-    //
-    //printf("Number of entries for detector %d: %f\n",detector,content);
+    
+               if(content<chamberlimit*mean) {
+                       //printf("Number of entries for detector %03d-%s: %.3e -> %.3f \n",detector,(coord[3]-1==0?"A":"B"),content,content/mean);                      
+                       continue;
+               }
     //
     // Check which halfchamber side corresponds to the bin number (0=A, 1=B)
     // Change the status accordingly
@@ -471,8 +474,6 @@ void AliTRDCalibChamberStatus::AnalyseHisto(Int_t limit) /*FOLD00*/
     }
   }
 
-  //printf("test2\n");
-
   // printf
   //for (Int_t idet=0; idet<540; idet++) {
   //  if(fCalChamberStatus->IsNoData(idet)) printf("No Data: chamber %d\n",idet);
index 663363a..1f215d4 100644 (file)
@@ -42,7 +42,7 @@ public:
   void ProcessEvent(AliRawReader    *rawReader, Int_t nevents_physics);
     
   void Init();
-  void AnalyseHisto(Int_t limit=200);
+  void AnalyseHisto(Int_t limit=200, Double_t chamberlimit=0.05);
   void CheckEORStatus(AliTRDCalDCSv2 *calDCS);
 
   void Add(AliTRDCalibChamberStatus *calibChamberStatus);
index 1c42ed6..9d3047f 100644 (file)
@@ -105,6 +105,7 @@ ClassImp(AliTRDPreprocessorOffline)
   fMinStatsGain(800),
   fMinStatsPRF(600),
   fMinStatsChamberStatus(20),
+  fMinSingleStatsChamberStatus(0.05),
   fBackCorrectGain(kFALSE),  
   fBackCorrectVdrift(kTRUE),
   fNotEnoughStatisticsForTheGain(kFALSE),
@@ -894,7 +895,7 @@ Bool_t AliTRDPreprocessorOffline::AnalyzeChamberStatus()
   // set up AliTRDCalibChamberStatus
   AliTRDCalibChamberStatus *ChamberStatus = new AliTRDCalibChamberStatus();
   ChamberStatus->SetSparseI(fSparse);
-  ChamberStatus->AnalyseHisto(fMinStatsChamberStatus);
+  ChamberStatus->AnalyseHisto(fMinStatsChamberStatus, fMinSingleStatsChamberStatus);
   // get AliTRDCalChamberStatus
   AliTRDCalChamberStatus *CalChamberStatus = ChamberStatus->GetCalChamberStatus();
 
index 61652ad..028f763 100644 (file)
@@ -67,6 +67,7 @@ public:
   void     SetMinStatsGain(Int_t minStatsGain)                       { fMinStatsGain = minStatsGain; }  
   void     SetMinStatsPRF(Int_t minStatsPRF)                         { fMinStatsPRF = minStatsPRF; }  
   void     SetMinStatsChamberStatus(Int_t minStatsChamberStatus)     { fMinStatsChamberStatus = minStatsChamberStatus; }
+       void     SetSingleMinStatsChamberStatus(Int_t minSingleStatsChamberStatus) { fMinSingleStatsChamberStatus = minSingleStatsChamberStatus; }
   void     SetLimitValidateNoData(Int_t nodatavalidate)              { fNoDataValidate = nodatavalidate; };
   void     SetLimitValidateBadCalib(Int_t badcalibvalidate)          { fBadCalibValidate = badcalibvalidate; };
   void     SetBackCorrectGain(Bool_t backCorrectGain)                { fBackCorrectGain = backCorrectGain; }
@@ -219,6 +220,7 @@ public:
   Int_t    fMinStatsGain;                 // MinStats Gain
   Int_t    fMinStatsPRF;                  // MinStats PRF
   Int_t    fMinStatsChamberStatus;        // MinStats ChamberStatus
+       Double_t fMinSingleStatsChamberStatus;  // MinStats per chamber in % of mean (ChamberStatus)
   Bool_t   fBackCorrectGain;              // Back correction afterwards gain  
   Bool_t   fBackCorrectVdrift;            // Back correction afterwards vdrift
   Bool_t   fNotEnoughStatisticsForTheGain;// Take the chamber per chamber distribution from the default distribution