]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Adjust needed statistics for Vd calibration and normalization with TPC signal for...
authorcblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 26 Apr 2012 11:17:26 +0000 (11:17 +0000)
committercblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 26 Apr 2012 11:17:26 +0000 (11:17 +0000)
TRD/AliTRDCalibTask.cxx
TRD/AliTRDCalibTask.h
TRD/AliTRDCalibraFillHisto.cxx
TRD/AliTRDCalibraFillHisto.h
TRD/AliTRDCalibraVdriftLinearFit.cxx
TRD/AliTRDCalibraVdriftLinearFit.h
TRD/AliTRDPreprocessorOffline.cxx
TRD/AliTRDPreprocessorOffline.h

index ee60e75d0635c0dd754b32cc7e995d204ee9b375..96d5eeecb2e0eb00cb2033ae2c54f3825122f277 100644 (file)
@@ -142,6 +142,7 @@ ClassImp(AliTRDCalibTask)
       fCutWithVdriftCalib(kFALSE),
       fMinNbTRDtracklets(0),
       fMinTRDMomentum(0),
+      fScaleGainWithTPCSignal(kFALSE),
       fLow(0),
       fHigh(30),
       fFillZero(kFALSE),
@@ -282,6 +283,7 @@ void AliTRDCalibTask::UserCreateOutputObjects()
     fTRDCalibraFillHisto->SetLinearFitterOn(fVdriftLinear); // Other possibility vdrift VDRIFT
     fTRDCalibraFillHisto->SetLinearFitterDebugOn(fVdriftLinear); // Other possibility vdrift
     fTRDCalibraFillHisto->SetExbAltFitOn(fExbAlt); // Alternative method for exb
+    fTRDCalibraFillHisto->SetScaleWithTPCSignal(fScaleGainWithTPCSignal); // Scale Gain with TPC signal
     for(Int_t k = 0; k < 3; k++){
       if(((fNz[k] != 10) && (fNrphi[k] != 10)) && ((fNz[k] != 100) && (fNrphi[k] != 100))) {
        fTRDCalibraFillHisto->SetNz(k,fNz[k]);                                    // Mode calibration
index 8ca5ec9add2d64afefe4667b4c636e26ef9db6e7..06450476a3dd23684b1b3919ad9ab68c8ad22c6b 100644 (file)
@@ -78,7 +78,8 @@ class AliTRDCalibTask : public AliAnalysisTaskSE {
   void SetCutWithVdriftCalib(Bool_t cutWithVdriftCalib)                {fCutWithVdriftCalib = cutWithVdriftCalib;};
   void SetMinNbTRDtracklets(Int_t minNbTRDtracklets)                   {fMinNbTRDtracklets = minNbTRDtracklets;};
   void SetMinTRDMometum(Double_t minTRDMomentum)                       {fMinTRDMomentum = minTRDMomentum;};
+  void SetScaleGainWithTPCSignal(Bool_t scaleGainWithTPCSignal)        {fScaleGainWithTPCSignal = scaleGainWithTPCSignal;}; 
+
   void SetVersionGainUsed(Int_t versionGainUsed)                       { fVersionGainUsed = versionGainUsed;   }
   void SetSubVersionGainUsed(Int_t subVersionGainUsed)                 { fSubVersionGainUsed = subVersionGainUsed;   }
   void SetVersionGainLocalUsed(Int_t versionGainLocalUsed)             { fVersionGainLocalUsed = versionGainLocalUsed;   }
@@ -175,6 +176,7 @@ class AliTRDCalibTask : public AliAnalysisTaskSE {
   Bool_t      fCutWithVdriftCalib;               // CutWithVdriftCalib for the gain and PH
   Int_t       fMinNbTRDtracklets;                // Min number of TRD tracklets
   Float_t     fMinTRDMomentum;                   // Min TRD momentum  
+  Bool_t      fScaleGainWithTPCSignal;           // Scale the TPC gain with the TPC signal
 
   Int_t       fLow;                              // lower limit of nb of TRD clusters per tracklet
   Int_t       fHigh;                             // higher limit of nb of TRD clusters per tracklet
@@ -209,7 +211,7 @@ class AliTRDCalibTask : public AliAnalysisTaskSE {
   AliTRDCalibTask(const AliTRDCalibTask&); 
   AliTRDCalibTask& operator=(const AliTRDCalibTask&); 
 
-  ClassDef(AliTRDCalibTask, 2); 
+  ClassDef(AliTRDCalibTask, 3); 
 };
 
 #endif
index 558e0b0e37720cc746e32b4514b921e1dc5c6eb5..53bbf5382df8ea1da94ed8c5a113a9ba78063e73 100644 (file)
@@ -142,6 +142,7 @@ AliTRDCalibraFillHisto::AliTRDCalibraFillHisto()
   ,fLinearFitterOn(kFALSE)
   ,fLinearFitterDebugOn(kFALSE)
   ,fExbAltFitOn(kFALSE)
+  ,fScaleWithTPCSignal(kFALSE)
   ,fRelativeScale(0)
   ,fThresholdClusterPRF2(15.0)
   ,fLimitChargeIntegration(kFALSE)
@@ -232,6 +233,7 @@ AliTRDCalibraFillHisto::AliTRDCalibraFillHisto(const AliTRDCalibraFillHisto &c)
   ,fLinearFitterOn(c.fLinearFitterOn)
   ,fLinearFitterDebugOn(c.fLinearFitterDebugOn)
   ,fExbAltFitOn(c.fExbAltFitOn)
+  ,fScaleWithTPCSignal(c.fScaleWithTPCSignal)
   ,fRelativeScale(c.fRelativeScale)
   ,fThresholdClusterPRF2(c.fThresholdClusterPRF2)
   ,fLimitChargeIntegration(c.fLimitChargeIntegration)
@@ -685,6 +687,9 @@ Bool_t AliTRDCalibraFillHisto::UpdateHistogramsV1(const AliTRDtrackV1 *t,const A
   Int_t numberoftrdtracklets = t->GetNumberOfTracklets();
   if(numberoftrdtracklets < fMinNbTRDtracklets) return kFALSE;
 
+  Double_t tpcsignal = esdtrack->GetTPCsignal()/50.0;
+  if(fScaleWithTPCSignal && tpcsignal <0.00001) return kFALSE;
+
   //
   if (!fCalibDB) {
     AliInfo("Could not get calibDB");
@@ -750,7 +755,15 @@ Bool_t AliTRDCalibraFillHisto::UpdateHistogramsV1(const AliTRDtrackV1 *t,const A
       // Add the charge if shared cluster
       cls = tracklet->GetClusters(jc+AliTRDseedV1::kNtb);
       //
-      chargeQ += StoreInfoCHPHtrack(cl, tracklet->GetQperTB(jc),group,row,col,cls); //tracklet->GetdQdl(jc)
+      //Scale with TPC signal or not
+      if(!fScaleWithTPCSignal) {
+       chargeQ += StoreInfoCHPHtrack(cl, tracklet->GetQperTB(jc),group,row,col,cls); //tracklet->GetdQdl(jc)
+       //printf("Do not scale now\n");
+      }
+      else {
+       chargeQ += StoreInfoCHPHtrack(cl, tracklet->GetQperTB(jc)/tpcsignal,group,row,col,cls); //tracklet->GetdQdl(jc)
+      }
+    
     }
     
     ////////////////////////////////////////
@@ -811,8 +824,8 @@ Bool_t AliTRDCalibraFillHisto::UpdateHistogramsV1(const AliTRDtrackV1 *t,const A
        Float_t dcaz = b[1];
        Int_t tpcnbclusters = 0;
        if(esdtrack) tpcnbclusters = esdtrack->GetTPCclusters(0);
-       Double_t tpcsignal = 0.0;
-       if(esdtrack) tpcsignal = esdtrack->GetTPCsignal();
+       Double_t ttpcsignal = 0.0;
+       if(esdtrack) ttpcsignal = esdtrack->GetTPCsignal();
         Int_t    cutvdriftlinear = 0;
        if(!pass) cutvdriftlinear = 1;
        
@@ -824,7 +837,7 @@ Bool_t AliTRDCalibraFillHisto::UpdateHistogramsV1(const AliTRDtrackV1 *t,const A
          "dcaxy="<<dcaxy<<
          "dcaz="<<dcaz<<
          "nbtpccls="<<tpcnbclusters<<
-         "tpcsignal="<<tpcsignal<<
+         "tpcsignal="<<ttpcsignal<<
          "cutvdriftlinear="<<cutvdriftlinear<<
          "ptrd="<<momentum<<
          "nbtrdtracklet="<<numberoftrdtracklets<<
index c462886e7195ad92031bb11937980f4b4a3e6d08..8169f97fae34199a632c063487fac4b66c87caee 100644 (file)
@@ -102,6 +102,7 @@ class AliTRDCalibraFillHisto : public TObject {
          void     SetLinearFitterOn(Bool_t linearfitteron = kTRUE)          { fLinearFitterOn      = linearfitteron;}
          void     SetLinearFitterDebugOn(Bool_t debug = kTRUE)              { fLinearFitterDebugOn = debug;         }
           void     SetExbAltFitOn(Bool_t fiton = kTRUE)                      { fExbAltFitOn      = fiton;}
+         void     SetScaleWithTPCSignal(Bool_t scaleWithTPCSignal = kTRUE)  { fScaleWithTPCSignal = scaleWithTPCSignal;}
          void     SetFirstRunGain(Int_t firstRunGain)                       { fFirstRunGain = firstRunGain;   }
          void     SetVersionGainUsed(Int_t versionGainUsed)                 { fVersionGainUsed = versionGainUsed;   }
          void     SetSubVersionGainUsed(Int_t subVersionGainUsed)           { fSubVersionGainUsed = subVersionGainUsed;   }
@@ -207,7 +208,8 @@ AliTRDCalibraVector *GetCalibraVector() const                                { r
           Bool_t   fVector2d;               // Chose to fill vectors
          Bool_t   fLinearFitterOn;         // Method with linear fit for drift velocity
          Bool_t   fLinearFitterDebugOn;    // Method with linear fit for drift velocity
-          Bool_t   fExbAltFitOn;              // Enable parabolic fit for exb
+          Bool_t   fExbAltFitOn;            // Enable parabolic fit for exb
+         Bool_t   fScaleWithTPCSignal;     // Scale the gain with TPC signal (If use then ask at least 70 TPC clusters)
 
   // How to fill the 2D
           Float_t  fRelativeScale;          // Scale of the deposited charge
@@ -344,7 +346,7 @@ AliTRDCalibraVector *GetCalibraVector() const                                { r
   AliTRDCalibraFillHisto();
   virtual ~AliTRDCalibraFillHisto(); 
     
-  ClassDef(AliTRDCalibraFillHisto,5)                         // TRD Calibration class
+  ClassDef(AliTRDCalibraFillHisto,6)                         // TRD Calibration class
 
 };
   
index c3d5c5dd02eddcd57854a5472caf15266d88b72f..ffe83e8ec1ae46c2a97b8e4605b83b6d77c1957d 100644 (file)
@@ -56,6 +56,7 @@ AliTRDCalibraVdriftLinearFit::AliTRDCalibraVdriftLinearFit() : /*FOLD00*/
   fLinearFitterPArray(540),
   fLinearFitterEArray(540),
   fRobustFit(kTRUE),
+  fMinNpointsFit(11),
   fDebugStreamer(0x0),
   fDebugLevel(0),
   fSeeDetector(0)
@@ -73,6 +74,7 @@ AliTRDCalibraVdriftLinearFit::AliTRDCalibraVdriftLinearFit(const AliTRDCalibraVd
   fLinearFitterPArray(540),
   fLinearFitterEArray(540),
   fRobustFit(kTRUE),
+  fMinNpointsFit(10),
   fDebugStreamer(0x0),
   fDebugLevel(0),
   fSeeDetector(0)
@@ -104,6 +106,7 @@ AliTRDCalibraVdriftLinearFit::AliTRDCalibraVdriftLinearFit(const TObjArray &obja
   fLinearFitterPArray(540),
   fLinearFitterEArray(540),
   fRobustFit(kTRUE),
+  fMinNpointsFit(10),
   fDebugStreamer(0x0),
   fDebugLevel(0),
   fSeeDetector(0)
@@ -428,7 +431,8 @@ void AliTRDCalibraVdriftLinearFit::FillPEArray2()
       TGraphErrors *gg=DrawMS(fitterhisto,nEntries);
       if (!gg) continue;
       // Number of points of the TGraphErrors
-      if(gg->GetN() < 20) {
+      //printf("Number of points %d for detector %d\n",gg->GetN(),cb);
+      if(gg->GetN() <  fMinNpointsFit) {
        if(gg) delete gg;
        continue;       
       }
@@ -444,6 +448,7 @@ void AliTRDCalibraVdriftLinearFit::FillPEArray2()
       (*par)[1] = f1->GetParameter(1);
       fLinearFitterPArray.AddAt(par,cb);
       fLinearFitterEArray.AddAt(parE,cb);
+      //printf("Value %f for detector %d\n",(*par)[1],cb);
             
       if(fDebugLevel==0) {
        if(gg) delete gg;
index 1e01183cfd57d794484fe285315b1ea5a2d3b82b..c621ac53688c57f06aefb3a3d5c0743f0358ce7a 100644 (file)
@@ -49,11 +49,13 @@ class AliTRDCalibraVdriftLinearFit : public TObject {
   TH2S           *GetLinearFitterHistoNoForce(Int_t detector) const   { return (TH2S*)fLinearFitterHistoArray.UncheckedAt(detector);};
   Bool_t          GetParam(Int_t detector, TVectorD *param);
   Bool_t          GetError(Int_t detector, TVectorD *error);
+  Int_t           GetMinNumberOfPointsForFit() const         { return fMinNpointsFit;};
 
   TObjArray      *GetPArray()                    { return &fLinearFitterPArray;       };
   TObjArray      *GetEArray()                    { return &fLinearFitterEArray;       };
   TObjArray       GetHistoArray() const          { return fLinearFitterHistoArray;    };
   void            SetRobustFit(Bool_t robustFit) { fRobustFit = robustFit;            };
+  void            SetMinNumberOfPointsForFit(Int_t minNpointsFit) { fMinNpointsFit = minNpointsFit;};
 
   // Debug
   void     SetDebugLevel(Short_t level)          { fDebugLevel = level;               };
@@ -69,13 +71,14 @@ private:
   TObjArray       fLinearFitterPArray;      // Array of result parameters from linear fitters for the detectors
   TObjArray       fLinearFitterEArray;      // Array of result errors from linear fitters for the detectors
   Bool_t          fRobustFit;               // Robust fit or not
-  
+  Int_t           fMinNpointsFit;           // Min number of points for the fit  
+
  //For debugging
   TTreeSRedirector *fDebugStreamer;         //!Debug streamer
   Short_t           fDebugLevel;            // Flag for debugging
   Int_t             fSeeDetector;           // Detector to see
  
-  ClassDef(AliTRDCalibraVdriftLinearFit,3)  // Online Vdrift calibration
+  ClassDef(AliTRDCalibraVdriftLinearFit,4)  // Online Vdrift calibration
 
 };
 
index a6e82bc7f2fe3eee4e9896a32c7f5bf3c1deda3e..c1f3cb16731736e04e321497aba2cbda1697e44b 100644 (file)
@@ -121,6 +121,7 @@ ClassImp(AliTRDPreprocessorOffline)
   fRobustFitExbAlt(kFALSE),
   fAlternativeVdrfitFit(kFALSE),
   fAlternativeExbAltFit(kFALSE),
+  fMinNbOfPointVdriftFit(11),
   fMethodeGain(0),
   fOutliersFitChargeLow(0.03),
   fOutliersFitChargeHigh(0.7),
@@ -767,8 +768,10 @@ Bool_t AliTRDPreprocessorOffline::AnalyzeVdriftLinearFit(){
   AliTRDCalibraFit *calibra = AliTRDCalibraFit::Instance();
   calibra->SetCalDetVdriftExB(fCalDetVdriftUsed,fCalDetExBUsed);
   calibra->SetMinEntries(fMinStatsVdriftLinear); // If there is less than 1000 entries in the histo: no fit
+  printf("The mean stat is by %d for VdriftLinear\n",fMinStatsVdriftLinear);
   //printf("Fill PE Array\n");
   fAliTRDCalibraVdriftLinearFit->SetRobustFit(fRobustFitDriftVelocity);
+  fAliTRDCalibraVdriftLinearFit->SetMinNumberOfPointsForFit(fMinNbOfPointVdriftFit);
   if(!fAlternativeVdrfitFit)
     fAliTRDCalibraVdriftLinearFit->FillPEArray();
   else
index b66d27cda9de1a370252fd339755a0197fc57268..3429c07b7f737eac77331f903053f38607e254ec 100644 (file)
@@ -67,7 +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     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; }
@@ -80,6 +80,7 @@ public:
   void     SetRobustFitDriftVelocity(Bool_t robustFitDriftVelocity)  { fRobustFitDriftVelocity = robustFitDriftVelocity;};
   void     SetRobustFitExbAlt(Bool_t robustFitExbAlt)                { fRobustFitExbAlt = robustFitExbAlt;};
   void     SetAlternativeDriftVelocityFit(Bool_t alt)                { fAlternativeVdrfitFit = alt;};
+  void     SetMinNbOfPointVdriftFit(Int_t minNbOfPointVdriftFit)     { fMinNbOfPointVdriftFit = minNbOfPointVdriftFit;};
   void     SetAlternativeExbAltFit(Bool_t alt)                       { fAlternativeExbAltFit = alt;};
   void     SetMethodeFitGain(Int_t methodeFitGain)                   { fMethodeGain = methodeFitGain;};
   void     SetOutliersFitChargeLow(Float_t outliersFitChargeLow)     { fOutliersFitChargeLow = outliersFitChargeLow; }
@@ -248,6 +249,7 @@ public:
   Bool_t   fRobustFitExbAlt;              // Robust fit for the exb alt 
   Bool_t   fAlternativeVdrfitFit;         // Alternative fitting method for vdrift calibration
   Bool_t   fAlternativeExbAltFit;         // Alternative fitting method for the alternative exb calibarion method
+  Int_t    fMinNbOfPointVdriftFit;        // Min number of points for the drift velocity calibration
   Int_t    fMethodeGain;                  // Methode Gain Fit
   Float_t  fOutliersFitChargeLow;         // The fit starts at fOutliersFitChargeLow procent number of entries
   Float_t  fOutliersFitChargeHigh;        // The fit starts at fOutliersFitChargeHigh procent number of entries
@@ -265,7 +267,7 @@ private:
 
   Bool_t fPHQon;                 //switch of PHQ
 
-  ClassDef(AliTRDPreprocessorOffline,3)
+  ClassDef(AliTRDPreprocessorOffline,4)
 };
 
 #endif