Introduce function to calculate the 'true' mean of vdrift, gain and t0 for the whole...
authorcblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 12 Jan 2011 15:40:33 +0000 (15:40 +0000)
committercblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 12 Jan 2011 15:40:33 +0000 (15:40 +0000)
TRD/Cal/AliTRDCalDet.cxx
TRD/Cal/AliTRDCalDet.h

index 37058df..94af75a 100644 (file)
@@ -528,5 +528,71 @@ void AliTRDCalDet::Divide(const AliTRDCalDet * calDet)
        }
     }
 }
+//_____________________________________________________________________________
+Double_t AliTRDCalDet::CalcMean(Bool_t wghtPads)
+{
+  // Calculate the mean value after rejection of the chambers not calibrated
+  // wghPads = kTRUE weighted with the number of pads in case of a AliTRDCalPad created (t0)
+  //  
+
+  Int_t iSM;
+  Double_t sum = 0.0;
+  Int_t ndet = 0;
+  Double_t meanALL = 0.0;
+  Double_t meanWP = 0.0;
+  Double_t pads=0.0;
+  Double_t padsALL=(144*16*24+144*12*6)*18;
+  Double_t meanSM[18];
+  Double_t meanSMWP[18];
+
+  Int_t det = 0;
+  while(det < 540) {
+    Float_t val= fData[det];
+    iSM = (Int_t)(det / (6*5));
+    pads=(((Int_t) (det % (6 * 5)) / 6) == 2) ? 144*12 : 144*16;
+    meanALL+=val/540.;
+    meanSM[iSM]+=val/30.;
+    meanWP+=val*(pads/padsALL);
+    meanSMWP[iSM]+=val*(pads/(padsALL/18.));
+    
+    /*    
+         printf(" det %d  val %.3f meanALL %.5f meanWP %.5f meanSM[%d] %.5f meanSMWP[%d] %.5f \n",
+         det,
+         val,
+         meanALL,
+         meanWP,
+         iSM,
+         meanSM[iSM],
+         iSM,
+         meanSMWP[iSM]);
+    */
+   
+    det++;
+  }
 
-
+  // debug
+  /*
+    printf(" ALL %.5f \n",meanALL);
+    printf(" WP %.5f \n",meanWP);
+    for(Int_t i=0; i<18; i++) printf(" SM %02d %.5f \n",i,meanSM[i]);
+    for(Int_t i=0; i<18; i++) printf(" SM %02d %.5f \n",i,meanSMWP[i]);
+  */
+
+  det=0;
+  while(det < 540) {
+    Float_t val= fData[det];
+    if (( (!wghtPads) &&
+          (TMath::Abs(val - meanALL) > 0.0001) &&
+          (TMath::Abs(val - meanSM[(Int_t)(det / (6*5))]) > 0.0001) ) ||
+        ( (wghtPads) &&
+          (TMath::Abs(val - meanWP) > 0.0001) &&
+          (TMath::Abs(val - meanSMWP[(Int_t)(det / (6*5) )]) > 0.0001) )
+        ) {
+      sum+=val;
+      ndet++;
+    }
+    det++;
+  }
+  
+  return (sum/ndet);
+}
index 5fb1496..1d140f2 100644 (file)
@@ -46,6 +46,7 @@ class AliTRDCalDet : public TNamed {
   Double_t GetRMSRobust(Double_t robust=0.92) const;
   Double_t GetMedian(AliTRDCalDet * const outlierDet=0) const;
   Double_t GetLTM(Double_t * sigma=0, Double_t fraction=0.9, AliTRDCalDet * const outlierDet=0);     
+  Double_t CalcMean(Bool_t wghtPads=kFALSE);
 
   // Plot functions
   TH1F * MakeHisto1Distribution(Float_t min=4, Float_t max=-4, Int_t type=0);     
@@ -69,4 +70,3 @@ class AliTRDCalDet : public TNamed {
 };
 
 #endif
-