Possibility to set threshold in SZ runs
authorpolicheh <policheh@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 31 Jan 2009 18:40:06 +0000 (18:40 +0000)
committerpolicheh <policheh@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 31 Jan 2009 18:40:06 +0000 (18:40 +0000)
PHOS/AliPHOSRawDecoder.h
PHOS/AliPHOSRawDecoderv1.cxx
PHOS/AliPHOSRawDigiProducer.cxx
PHOS/AliPHOSRawDigiProducer.h
PHOS/AliPHOSRecoParam.cxx
PHOS/AliPHOSRecoParam.h

index 3c89c55..e55d1ea 100644 (file)
@@ -29,6 +29,7 @@ public:
 
   void SubtractPedestals(Bool_t subtract) {fPedSubtract=subtract;}
   void SetAmpOffset(Int_t extPed=5){fAmpOffset=extPed ;}
+  void SetAmpThreshold(Int_t thr=5){fAmpThreshold=thr ;}
 
   Double_t GetEnergy() const { return fEnergy; }
   Double_t GetTime() const { return fTime; }
@@ -55,6 +56,7 @@ protected:
   Double_t fQuality ; //Sample quality
   Double_t fPedestalRMS; //calciulated RMS of pedestal (non-ZS runs)
   Int_t fAmpOffset ; //Pedestal offset from ALTRO chips
+  Int_t fAmpThreshold ; //Zero Suppression threshold from ALTRO chips
   Int_t fModule;    // PHOS module number (1-5)
   Int_t fColumn;    // column in the module
   Int_t fRow;       // row
@@ -71,7 +73,7 @@ protected:
   AliPHOSCalibData * fCalibData ;   //! Calibration database if avalable
 
 
-  ClassDef(AliPHOSRawDecoder,2)
+  ClassDef(AliPHOSRawDecoder,3)
 };
 
 #endif
index 7d7a155..fc51ec6 100644 (file)
@@ -56,7 +56,7 @@ ClassImp(AliPHOSRawDecoderv1)
 
 //-----------------------------------------------------------------------------
   AliPHOSRawDecoderv1::AliPHOSRawDecoderv1():AliPHOSRawDecoder(),
-fSampleParamsLow(0x0),fSampleParamsHigh(0x0),fToFit(0x0)
+  fSampleParamsLow(0x0),fSampleParamsHigh(0x0),fToFit(0x0)
 {
   //Default constructor.
 }
@@ -217,7 +217,7 @@ Bool_t AliPHOSRawDecoderv1::NextDigit()
       }
       else{
         //take pedestals from DB
-        pedestal = fAmpOffset ;
+        pedestal = fAmpThreshold ;
         if(fCalibData){
            Float_t truePed = fCalibData->GetADCpedestalEmc(fModule, fColumn, fRow) ;
            Int_t   altroSettings = fCalibData->GetAltroOffsetEmc(fModule, fColumn, fRow) ;
@@ -494,7 +494,7 @@ Bool_t AliPHOSRawDecoderv1::NextDigit()
       pedRMS += in->GetSignal()*in->GetSignal() ;
       nPed++;
     }
-    fSamples->AddAt(in->GetSignal(),iBin);
+    fSamples->AddAt(in->GetSignal()-fAmpOffset,iBin);
     fTimes->AddAt(in->GetTime(),iBin);
  
 //Debug==============
index 60098cc..59a389f 100644 (file)
@@ -53,6 +53,7 @@ AliPHOSRawDigiProducer::AliPHOSRawDigiProducer():
   fCpvMinE(0.),
   fSampleQualityCut(1.),
   fGlobalAltroOffset(0),
+  fGlobalAltroThreshold(0),
   fEmcCrystals(0),
   fGeom(0),
   fPulseGenerator(0)
@@ -66,6 +67,7 @@ AliPHOSRawDigiProducer::AliPHOSRawDigiProducer(const AliPHOSRecoParam* recoParam
   fCpvMinE(0.),
   fSampleQualityCut(1.),
   fGlobalAltroOffset(0),
+  fGlobalAltroThreshold(0),
   fEmcCrystals(0),
   fGeom(0),
   fPulseGenerator(0)
@@ -78,6 +80,7 @@ AliPHOSRawDigiProducer::AliPHOSRawDigiProducer(const AliPHOSRecoParam* recoParam
   fCpvMinE = recoParam->GetCPVMinE();
   fSampleQualityCut = recoParam->GetEMCSampleQualityCut() ;
   fGlobalAltroOffset = recoParam->GetGlobalAltroOffset() ;
+  fGlobalAltroThreshold = recoParam->GetGlobalAltroThreshold() ;
 
   fGeom=AliPHOSGeometry::GetInstance() ;
   if(!fGeom) fGeom = AliPHOSGeometry::GetInstance("IHEP");
@@ -95,6 +98,7 @@ AliPHOSRawDigiProducer::AliPHOSRawDigiProducer(const AliPHOSRawDigiProducer &dp)
   fCpvMinE(0.),
   fSampleQualityCut(1.),
   fGlobalAltroOffset(0),
+  fGlobalAltroThreshold(0),
   fEmcCrystals(0),
   fGeom(0),
   fPulseGenerator(0)
@@ -103,6 +107,9 @@ AliPHOSRawDigiProducer::AliPHOSRawDigiProducer(const AliPHOSRawDigiProducer &dp)
 
   fEmcMinE = dp.fEmcMinE ;
   fCpvMinE = dp.fCpvMinE ;
+  fSampleQualityCut = dp.fSampleQualityCut;
+  fGlobalAltroOffset = dp.fGlobalAltroOffset;
+  fGlobalAltroThreshold = dp.fGlobalAltroThreshold;
   fEmcCrystals = dp.fEmcCrystals ;
   fPulseGenerator = new AliPHOSPulseGenerator();
   fGeom = dp.fGeom ;
@@ -118,6 +125,7 @@ AliPHOSRawDigiProducer& AliPHOSRawDigiProducer::operator= (const AliPHOSRawDigiP
   fCpvMinE = dp.fCpvMinE ;
   fSampleQualityCut = dp.fSampleQualityCut ;
   fGlobalAltroOffset = dp.fGlobalAltroOffset ;
+  fGlobalAltroThreshold = dp.fGlobalAltroThreshold ;
   fEmcCrystals = dp.fEmcCrystals ;
   fGeom = dp.fGeom ;
   if(fPulseGenerator) delete fPulseGenerator ;
@@ -153,6 +161,9 @@ void AliPHOSRawDigiProducer::MakeDigits(TClonesArray *digits, AliPHOSRawDecoder*
   //Read current altro offcet from RCU
   decoder->SetAmpOffset(fGlobalAltroOffset) ;
 
+  //Read ZS threshold from RCU
+  decoder->SetAmpThreshold(fGlobalAltroThreshold) ;
+
   //Let decoder subtract pedestals in case of ZS
   decoder->SetCalibData(fgCalibData) ;
   
index bd6f4cd..2652258 100644 (file)
@@ -45,13 +45,13 @@ private:
   Float_t fCpvMinE ;                 // minimum energy of digit to be included into cluster
   Float_t fSampleQualityCut;         // Cut on sample shapes: 0: no samples; 1: default parameterization; 999: accept even obviously bad
   Int_t   fGlobalAltroOffset;        // Global ALTRO offset used in ZS runs
-
+  Int_t   fGlobalAltroThreshold;     // Global ALTRO threshold used in ZS runs
   Int_t fEmcCrystals ;               //  number of EMC crystals
   AliPHOSGeometry * fGeom ;          //! PHOS geometry
   static AliPHOSCalibData * fgCalibData ;   //! Calibration database if avalable
   AliPHOSPulseGenerator * fPulseGenerator ; //! Class with pulse shape parameters
 
-  ClassDef(AliPHOSRawDigiProducer,3)
+  ClassDef(AliPHOSRawDigiProducer,4)
 };
 
 #endif
index d2ae8ec..d12b9d6 100644 (file)
@@ -45,6 +45,7 @@ AliPHOSRecoParam::AliPHOSRecoParam() :
   fEMCEnergyCorrectionOn(kTRUE),
   fEMCDecoderVersion(""),
   fGlobalAltroOffset(0),
+  fGlobalAltroThreshold(0),
   fCPVClusteringThreshold(0.0),
   fCPVLocMaxCut(0.03),
   fCPVMinE(0.0),
@@ -70,6 +71,7 @@ AliPHOSRecoParam::AliPHOSRecoParam(const AliPHOSRecoParam& ):
   fEMCEnergyCorrectionOn(kTRUE),
   fEMCDecoderVersion(""),
   fGlobalAltroOffset(0),
+  fGlobalAltroThreshold(0),
   fCPVClusteringThreshold(0.0),
   fCPVLocMaxCut(0.03),
   fCPVMinE(0.0),
@@ -98,6 +100,7 @@ AliPHOSRecoParam& AliPHOSRecoParam::operator = (const AliPHOSRecoParam& recoPara
     fEMCEnergyCorrectionOn  = recoParam.fEMCEnergyCorrectionOn;
     fEMCDecoderVersion      = recoParam.fEMCDecoderVersion;
     fGlobalAltroOffset      = recoParam.fGlobalAltroOffset;
+    fGlobalAltroThreshold   = recoParam.fGlobalAltroThreshold;
     fCPVClusteringThreshold = recoParam.fCPVClusteringThreshold;
     fCPVLocMaxCut           = recoParam.fCPVLocMaxCut;
     fCPVMinE                = recoParam.fCPVMinE;
@@ -125,6 +128,7 @@ void AliPHOSRecoParam::Print(Option_t * /*option*/) const
                  "\tEMCEnergyCorrectionOn  = %d\n"
                  "\tEMCDecoderVersion      = \"%s\"\n"
                  "\tGlobalAltroOffset      = %d",
+                 "\tGlobalAltroThreshold   = %d",
                  fEMCClusteringThreshold,
                  fEMCLocMaxCut,
                  fEMCRawDigitThreshold,
@@ -137,7 +141,8 @@ void AliPHOSRecoParam::Print(Option_t * /*option*/) const
                  fEMCUnfold,
                  fEMCEnergyCorrectionOn,
                  fEMCDecoderVersion.Data(),
-                 fGlobalAltroOffset));
+                 fGlobalAltroOffset,
+                 fGlobalAltroThreshold));
 
 }
 
index 6ec974c..fb93958 100644 (file)
@@ -32,6 +32,7 @@ public:
   const char* EMCDecoderVersion()     const { return fEMCDecoderVersion.Data();}
   Bool_t  GetEMCEnergyCorrectionOn()  const { return fEMCEnergyCorrectionOn;   }
   Int_t   GetGlobalAltroOffset()      const { return fGlobalAltroOffset ;      }
+  Int_t   GetGlobalAltroThreshold()   const { return fGlobalAltroThreshold ;   }
 
   Float_t GetCPVClusteringThreshold() const { return fCPVClusteringThreshold;  }
   Float_t GetCPVLocalMaxCut()         const { return fCPVLocMaxCut;            }
@@ -52,6 +53,7 @@ public:
   void SetEMCUnfolding(Bool_t toUnfold=kFALSE)       { fEMCUnfold             =toUnfold;}
   void SetEMCEnergyCorrectionOn(Bool_t on=kTRUE)     { fEMCEnergyCorrectionOn =on;      }
   void SetGlobalAltroOffset(Int_t offset=5)          { fGlobalAltroOffset     =offset ; }
+  void SetGlobalAltroThreshold(Int_t ZSth=5)         { fGlobalAltroThreshold  =ZSth;    }
 
   void SetCPVClusteringThreshold(Float_t cluth)      { fCPVClusteringThreshold=cluth;   }
   void SetCPVLocalMaxCut(Float_t cut)                { fCPVLocMaxCut          =cut;     }
@@ -79,6 +81,7 @@ protected:
   Bool_t  fEMCEnergyCorrectionOn;  // EMC: if true do non-linear correction of cluster energy
   TString fEMCDecoderVersion ;     // EMC: AliPHOSRawDecoder version
   Int_t   fGlobalAltroOffset ;     // Offset used in ALTRO chips in SZ runs
+  Int_t   fGlobalAltroThreshold ;  // Threshold used in ALTRO chips in SZ runs
 
   Float_t fCPVClusteringThreshold; // CPV: Min.digit energy to start a new cluster, in GeV
   Float_t fCPVLocMaxCut;           // CPV: Min.energy difference between two local maxima, in GeV
@@ -88,7 +91,7 @@ protected:
 
   static TObjArray* fgkMaps;       // ALTRO mappings for RCU0..RCU3
 
-  ClassDef(AliPHOSRecoParam,9)
+  ClassDef(AliPHOSRecoParam,10)
 };
 
 #endif