Changeset 5505


Ignore:
Timestamp:
11/29/04 18:46:05 (20 years ago)
Author:
gaug
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r5502 r5505  
    3434     - fixed documentation of data members
    3535     - Introduced setter and getter for name of weights file
     36     - modified way to use the NoiseCalculation(). Now more compatible
     37       with MPedCalcFromLoGain
    3638
    3739   * msignal/MExtractFixedWindowPeakSearch.cc
  • trunk/MagicSoft/Mars/mpedestal/MPedCalcFromLoGain.cc

    r5504 r5505  
    137137
    138138#include "MExtractTimeAndCharge.h"
     139#include "MExtractTimeAndChargeDigitalFilter.h"
    139140
    140141#include "MParList.h"
     
    245246      SetExtractWindow(fExtractor->GetHiGainFirst(),(Int_t)fExtractor->GetNumHiGainSamples());
    246247      lastavailable = losamples-1;
     248      if (fExtractor->InheritsFrom("MExtractTimeAndChargeDigitalFilter"))
     249        {
     250          MExtractTimeAndChargeDigitalFilter* df = (MExtractTimeAndChargeDigitalFilter*)fExtractor;
     251          if (!df->IsWeightsSet())
     252            if (!df->ReadWeightsFile(df->GetNameWeightsFile()))
     253              return kFALSE;
     254        }
    247255    }
    248256
     
    438446  const Bool_t logainabflag = (pixel->HasABFlag() + pixel->GetNumHiGainSamples()) & 0x1;
    439447  Float_t dummy;
    440   fExtractor->FindTimeAndChargeLoGain(logain,sum,dummy,dummy,dummy,sat,ped,logainabflag);
     448  fExtractor->FindTimeAndChargeHiGain(logain,logain,sum,dummy,dummy,dummy,sat,ped,logainabflag);
    441449}
    442450
  • trunk/MagicSoft/Mars/mpedestal/MPedCalcPedRun.cc

    r5504 r5505  
    122122
    123123#include "MExtractTimeAndCharge.h"
     124#include "MExtractTimeAndChargeDigitalFilter.h"
    124125
    125126#include "MParList.h"
     
    204205
    205206  if (fExtractor)
    206     SetExtractWindow(fExtractor->GetHiGainFirst(),(Int_t)fExtractor->GetNumHiGainSamples());
    207 
     207    {
     208      SetExtractWindow(fExtractor->GetHiGainFirst(),(Int_t)fExtractor->GetNumHiGainSamples());
     209      if (fExtractor->InheritsFrom("MExtractTimeAndChargeDigitalFilter"))
     210        {
     211          MExtractTimeAndChargeDigitalFilter* df = (MExtractTimeAndChargeDigitalFilter*)fExtractor;
     212          if (!df->IsWeightsSet())
     213            if (!df->ReadWeightsFile(df->GetNameWeightsFile()))
     214              return kFALSE;
     215        }
     216    }
     217 
    208218  MExtractPedestal::ReInit(pList);
    209219
     
    318328}
    319329
     330
    320331void MPedCalcPedRun::CalcExtractor( MRawEvtPixelIter *pixel, Float_t &sum, MPedestalPix &ped)
    321332{
  • trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.cc

    r5504 r5505  
    9191//
    9292MExtractTimeAndChargeDigitalFilter::MExtractTimeAndChargeDigitalFilter(const char *name, const char *title)
    93     : fWeightsSet(kFALSE)
     93    : fWeightsSet(kFALSE), fRandomIter(0)
    9494{
    9595    fName  = name  ? name  : "MExtractTimeAndChargeDigitalFilter";
     
    188188Int_t MExtractTimeAndChargeDigitalFilter::PreProcess(MParList *pList)
    189189{
    190 
    191190  if (!fWeightsSet)
    192191    if (!ReadWeightsFile(fNameWeightsFile))
     
    223222void MExtractTimeAndChargeDigitalFilter::InitArrays()
    224223{
    225   fHiGainSignal.Set(fHiGainLast - fHiGainFirst + 1 + fHiLoLast);
    226   fLoGainSignal.Set(fLoGainLast - fLoGainFirst + 1);
     224  Int_t range = (Int_t)(fHiGainLast - fHiGainFirst + 1 + fHiLoLast);
     225  fHiGainSignal.Set(range);
     226  range = (Int_t)(fLoGainLast - fLoGainFirst + 1);
     227  fLoGainSignal.Set(range);
    227228}
    228229
     
    237238
    238239  Int_t range = fHiGainLast - fHiGainFirst + 1;
     240 
    239241  const Byte_t *end = ptr + range;
    240242  Byte_t *p     = ptr;
     
    305307    return;
    306308
     309  //
     310  // Slide with a window of size fWindowSizeHiGain over the sample
     311  // and multiply the entries with the corresponding weights
     312  //
     313  if (IsNoiseCalculation())
     314    {
     315      if (fRandomIter == 10)
     316        fRandomIter = 0;
     317      for (Int_t ids=0; ids < fWindowSizeHiGain; ids++)
     318        {
     319          const Int_t   idx = fBinningResolutionHiGain*ids + fRandomIter;
     320          sum              += fAmpWeightsHiGain [idx]*fHiGainSignal[ids];
     321        }
     322      fRandomIter++;
     323      return;
     324    }
     325 
    307326  Float_t time_sum  = 0.;
    308327  Float_t fmax      = 0.;
     
    330349      }
    331350
    332       //  if (IsNoiseCalculation()) return;
    333 
    334351      if (sum>fmax)
    335352      {
     
    373390  {
    374391    const Int_t   idx = fBinningResolutionHiGain*sample + fBinningResolutionHalfHiGain + t_iter;
    375     const Int_t   ids = IsNoiseCalculation() ? sample : max_p + sample;
     392    const Int_t   ids = max_p + sample;
    376393   
    377     const Float_t pex = ids < 0 ? 0. :
    378       ( ids > range ? 0. : fHiGainSignal[ids]);
     394    const Float_t pex = ids < 0 ? 0. : ( ids > range ? 0. : fHiGainSignal[ids]);
    379395    sum              += fAmpWeightsHiGain [idx]*pex;
    380396    time_sum         += fTimeWeightsHiGain[idx]*pex;
     
    436452    }
    437453 
     454  //
     455  // Slide with a window of size fWindowSizeHiGain over the sample
     456  // and multiply the entries with the corresponding weights
     457  //
     458  if (IsNoiseCalculation())
     459    {
     460      for (Int_t ids=0; ids < fWindowSizeLoGain; ids++)
     461        {
     462          const Int_t   idx = fBinningResolutionHiGain*ids + fRandomIter;
     463          sum              += fAmpWeightsLoGain [idx]*fLoGainSignal[ids];
     464        }
     465      return;
     466    }
     467
    438468  Float_t time_sum  = 0.;
    439469  Float_t fmax      = 0.;
     
    503533  {
    504534    const Int_t   idx = fBinningResolutionLoGain*sample + fBinningResolutionHalfLoGain + t_iter;
    505     const Int_t   ids = (IsNoiseCalculation()) ? sample : max_p + sample;;
    506     const Float_t pex = ids < 0 ? 0. :
    507       ( ids > range ? 0. : fLoGainSignal[ids]);
     535    const Int_t   ids = max_p + sample;;
     536    const Float_t pex = ids < 0 ? 0. : ( ids > range ? 0. : fLoGainSignal[ids]);
    508537    sum              += fAmpWeightsLoGain [idx]*pex;
    509538    time_sum         += fTimeWeightsLoGain[idx]*pex;
  • trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.h

    r5504 r5505  
    5050  TString fNameWeightsFile;                     // Name of the weights file
    5151  Bool_t  fWeightsSet;                          // Flag if weights have alreayd been set
    52  
     52  UInt_t  fRandomIter;                          // Counter used to randomize weights for noise calculation
     53
    5354  Bool_t ReInit(MParList *pList);
    5455  Int_t PreProcess(MParList *pList);
     
    8788
    8889  void Print(Option_t *o="") const;
    89  
     90
     91  Bool_t IsWeightsSet() const  { return fWeightsSet;  }
     92
    9093  void FindTimeAndChargeHiGain(Byte_t *firstused, Byte_t *logain, Float_t &sum, Float_t &dsum,
    9194                               Float_t &time, Float_t &dtime,
  • trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSlidingWindow.cc

    r5504 r5505  
    187187void MExtractTimeAndChargeSlidingWindow::InitArrays()
    188188{
    189   fHiGainSignal.Set(fHiGainLast - fHiGainFirst + 1 + fHiLoLast);
    190   fLoGainSignal.Set(fLoGainLast - fLoGainFirst + 1);
     189  Int_t range = (Int_t)(fHiGainLast - fHiGainFirst + 1 + fHiLoLast);
     190  fHiGainSignal.Set(range);
     191  range = (Int_t)(fLoGainLast - fLoGainFirst + 1);
     192  fLoGainSignal.Set(range);
    191193}
    192194
Note: See TracChangeset for help on using the changeset viewer.