Ignore:
Timestamp:
03/04/07 14:01:14 (18 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars/msignal
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/msignal/MExtractor.cc

    r8358 r8364  
    1717!
    1818!   Author(s): Markus Gaug, 04/2004 <mailto:markus@ifae.es>
    19 !
    20 !   Copyright: MAGIC Software Development, 2000-2004
     19!   Author(s): Thomas Bretz <mailto:tbretz@astro.uni-wuerzburg.de>
     20!
     21!   Copyright: MAGIC Software Development, 2000-2007
    2122!
    2223!
     
    7475//  - Byte_t fHiLoLast;                // Number of slices in fLoGainSamples counted for the High-Gain signal
    7576//
     77// Class Version 8:
     78// ----------------
     79//  - Byte_t fSaturationLimit;
     80//  + Uint_t fSaturationLimit;
     81//
    7682//
    7783// Input Containers:
     
    108114using namespace std;
    109115
    110 const Byte_t  MExtractor::fgSaturationLimit = 245;
     116const UInt_t  MExtractor::fgSaturationLimit = 245;
    111117const TString MExtractor::fgNamePedestalCam = "MPedestalCam";
    112118const TString MExtractor::fgNameSignalCam   = "MExtractedSignalCam";
     
    255261    if (numl==0)
    256262    {
    257         *fLog << inf << "No lo-gains... resetting lo-gain range and saturation limit." << endl;
     263        *fLog << inf << "No lo-gains... resetting lo-gain range";
    258264        fLoGainFirst=0;
    259265        fLoGainLast =0;
    260         fSaturationLimit=0xff;
     266        if (fSaturationLimit>0xff)
     267        {
     268            *fLog << " and saturation limit";
     269            fSaturationLimit=0xff;
     270        }
     271        *fLog << "." << endl;
    261272    }
    262273
     
    443454    if (IsEnvDefined(env, prefix, "SaturationLimit", print))
    444455    {
    445         SetSaturationLimit(GetEnvValue(env, prefix, "SaturationLimit", fSaturationLimit));
     456        SetSaturationLimit(GetEnvValue(env, prefix, "SaturationLimit", (Int_t)fSaturationLimit));
    446457        rc = kTRUE;
    447458    }
  • trunk/MagicSoft/Mars/msignal/MExtractor.h

    r8358 r8364  
    3232 
    3333protected:
    34   static const Byte_t  fgSaturationLimit;  //! Default for fSaturationLimit (now set to: 254)
     34  static const UInt_t  fgSaturationLimit;  //! Default for fSaturationLimit (now set to: 254)
    3535  static const TString fgNamePedestalCam;  //! "MPedestalCam"
    3636  static const TString fgNameSignalCam;    //! "MExtractedSignalCam"
     
    5959  Float_t  fSqrtLoGainSamples;             // Sqrt. nr. Low  Gain FADC slices used to extract the signal
    6060
    61   Byte_t   fSaturationLimit;               // Highest FADC slice value until being declared saturated
     61  UInt_t   fSaturationLimit;               // Highest FADC slice value until being declared saturated
    6262
    6363  TString  fNamePedestalCam;               // Name of the 'MPedestalCam' container
     
    9494  Float_t GetResolutionPerPheHiGain() const { return fResolutionPerPheHiGain; }
    9595  Float_t GetResolutionPerPheLoGain() const { return fResolutionPerPheLoGain; }
    96   Byte_t  GetSaturationLimit() const { return fSaturationLimit; }
     96  UInt_t  GetSaturationLimit() const { return fSaturationLimit; }
    9797
    9898  Bool_t  HasLoGain() const { return fLoGainFirst>0 || fLoGainLast>0; }
     
    106106
    107107  void SetOffsetLoGain    ( const Float_t  f=fgOffsetLoGain          ) { fOffsetLoGain     = f;    }
    108   void SetSaturationLimit ( const Byte_t lim=fgSaturationLimit       ) { fSaturationLimit  = lim;  }
     108  void SetSaturationLimit ( const UInt_t lim=fgSaturationLimit       ) { fSaturationLimit  = lim;  }
    109109  void SetNamePedestalCam ( const char *name=fgNamePedestalCam.Data()) { fNamePedestalCam  = name; }
    110110  void SetNameSignalCam   ( const char *name=fgNameSignalCam.Data()  ) { fNameSignalCam    = name; }
     
    122122  void Print(Option_t *o="") const; //*MENU*
    123123
    124   ClassDef(MExtractor, 7) // Signal Extractor Base Class
     124  ClassDef(MExtractor, 8) // Signal Extractor Base Class
    125125};
    126126
  • trunk/MagicSoft/Mars/msignal/MSignalCalc.cc

    r8357 r8364  
    4646
    4747#include "MRawRunHeader.h"
    48 #include "MRawEvtData.h"       // MRawEvtData::GetNumPixels
    4948#include "MSignalCam.h"
    5049#include "MPedestalPix.h"
    5150#include "MPedestalCam.h"
    5251#include "MRawEvtPixelIter.h"
     52#include "MPedestalSubtractedEvt.h"
    5353
    5454ClassImp(MSignalCalc);
     
    6666    fName  = name  ? name  : "MSignalCalc";
    6767    fTitle = title ? title : "Task to calculate Cerenkov photons from raw data";
    68 
    69     AddToBranchList("MRawEvtData.fHiGainPixId");
    70     AddToBranchList("MRawEvtData.fLoGainPixId");
    71     AddToBranchList("MRawEvtData.fHiGainFadcSamples");
    72     AddToBranchList("MRawEvtData.fLoGainFadcSamples");
    7368}
    7469
     
    9590    }
    9691
    97     fRawEvt = (MRawEvtData*)pList->FindObject("MRawEvtData");
     92    fRawEvt = (MPedestalSubtractedEvt*)pList->FindObject("MPedestalSubtractedEvt");
    9893    if (!fRawEvt)
    9994    {
    100         *fLog << dbginf << "MRawEvtData not found... aborting." << endl;
     95        *fLog << dbginf << "MPedestalSubtractedEvt not found... aborting." << endl;
    10196        return kFALSE;
    10297    }
     
    130125// pixel in the MSignalCam container.
    131126//
     127#include <TSystem.h>
    132128Int_t MSignalCalc::Process()
    133129{
    134     MRawEvtPixelIter pixel(fRawEvt);
    135 
    136     while (pixel.Next())
     130    const Int_t npix = fRawEvt->GetNumPixels();
     131    const Int_t nhi  = fRunHeader->GetNumSamplesHiGain();
     132    const Int_t nlo  = fRunHeader->GetNumSamplesLoGain();
     133
     134    for (int i=0; i<npix; i++)
    137135    {
    138         Byte_t *ptr   = pixel.GetHiGainSamples();
    139         Byte_t *max   = ptr+pixel.GetIdxMaxHiGainSample();
    140         Byte_t *end   = ptr+fRunHeader->GetNumSamplesHiGain();
     136        Byte_t *raw = fRawEvt->GetSamplesRaw(i);
     137
     138        Byte_t *ptr   = raw;
     139        Byte_t *max   = ptr+fRawEvt->GetMax(i, 0, nhi);
     140        Byte_t *end   = ptr+nhi;
    141141        Byte_t *first = max-fBefore;
    142142        Byte_t *last  = max+fAfter;
     
    144144        ULong_t sumb  = 0;   // sum background
    145145        ULong_t sqb   = 0;   // sum sqares background
    146         ULong_t sumsb = 0;   // sum signal+background
     146        //ULong_t sumsb = 0;   // sum signal+background
    147147        ULong_t sqsb  = 0;   // sum sqares signal+background
    148148
     
    168168            else
    169169            {
    170                 sumsb += *ptr;
     170                //sumsb += *ptr;
    171171                sqsb  += *ptr* *ptr;
    172172                nsb++;
     
    175175        }
    176176
    177         if (sat==0 && ishi)
     177        if (nlo>0 && sat==0 && ishi)
    178178        {
    179179            // Area: x9
    180             ptr = pixel.GetLoGainSamples();
    181             end = ptr+fRunHeader->GetNumSamplesLoGain();
     180            ptr = raw+nhi;
     181            end = ptr+nlo;
    182182
    183183            sumb = 0;   // sum background
     
    187187            while (ptr<end)
    188188            {
    189                 // Background already calced from hi-gains!
     189                // Background already caced from hi-gains!
    190190                sumb += *ptr;
    191191                sqb  += *ptr* *ptr;
     
    195195        }
    196196
    197         if (sat>1 && !ishi)
     197        if (nlo>0 && sat>1 && !ishi)
    198198        {
    199199            // Area: x9
    200             ptr = pixel.GetLoGainSamples();
    201             max = ptr+pixel.GetIdxMaxLoGainSample();
     200            ptr = raw+nhi;
     201            max = ptr+fRawEvt->GetMax(i, nhi, nhi+nlo);
    202202
    203203            if (*max>250)
     
    207207            }
    208208
    209             end   = ptr+fRunHeader->GetNumSamplesLoGain();
     209            end   = ptr+nlo;
    210210            first = max-fBefore;
    211211            last  = max+fAfter;
    212212
    213             sumsb = 0;   // sum signal+background
    214             sqsb  = 0;   // sum sqares signal+background
    215             //sumb  = 0;   // sum background
     213            //sumsb = 0;   // sum signal+background
     214            //sqsb  = 0;   // sum sqares signal+background
     215            sumb  = 0;   // sum background
    216216            //sqb   = 0;   // sum sqares background
    217217
     
    230230                else
    231231                {
    232                     sumsb += *ptr;
     232                    //sumsb += *ptr;
    233233                    sqsb  += *ptr* *ptr;
    234234                    nsb++;
     
    238238        }
    239239
    240         Float_t b  = (float)sumb/nb;       // background
    241         Float_t sb = (float)sumsb/nsb;     // signal+background
    242 
    243         Float_t msb  = (float)sqb/nb;      // mean square background
     240        Float_t b  = nb==0 ? 0 : (float)sumb/nb;       // background
     241        //Float_t sb = (float)sumsb/nsb;     // signal+background
     242
     243        Float_t msb  = nb==0 ? 0 : (float)sqb/nb;      // mean square background
    244244        //Float_t mssb = (float)sqsb/nsb;    // mean square signal+background
    245245
     
    247247        //Float_t sigsb = sqrt(mssb-sb*sb);  // sigma signal+background
    248248
    249         Float_t s   = sb-b;                // signal
     249        //Float_t s   = sb-b;                // signal
    250250        //Float_t sqs = sqsb-nsb*b;          // sum squares signal
    251251
     
    253253        //Float_t sigs = sqrt(mss-s*s);      // sigma signal
    254254
    255         if (sat>1)
    256             s *= 11.3;
    257 
    258         Int_t idx = pixel.GetPixelId();
     255        //if (sat>1)
     256        //    s *= 11.3;
     257
    259258        //fCerPhotEvt->AddPixel(idx, s, sigs);
    260259
     
    262261        // MMcPedestalCopy and MMcPedestalNSBAdd
    263262        if (fPedestals)
    264             (*fPedestals)[idx].Set(b, sigb);
     263            (*fPedestals)[i].Set(b, sigb);
    265264    }
    266265
  • trunk/MagicSoft/Mars/msignal/MSignalCalc.h

    r8357 r8364  
    66#endif
    77
    8 class MRawEvtData;
    98class MPedestalCam;
    109class MSignalCam;
    1110class MRawRunHeader;
     11class MPedestalSubtractedEvt;
    1212
    1313class MSignalCalc : public MTask
    1414{
    1515private:
    16     MPedestalCam  *fPedestals;  // Pedestals of all pixels in the camera
    17     MRawEvtData  *fRawEvt;     // raw event data (time slices)
    18     MSignalCam    *fCerPhotEvt; // Cerenkov Photon Event used for calculation
    19     MRawRunHeader *fRunHeader;  // RunHeader information
     16    MRawRunHeader          *fRunHeader;  // RunHeader information
     17    MPedestalSubtractedEvt *fRawEvt;     // raw event data (time slices)
     18    MSignalCam             *fCerPhotEvt; // Cerenkov Photon Event used for calculation
     19    MPedestalCam           *fPedestals;  // Pedestals of all pixels in the camera
    2020
    2121    Byte_t fBefore;
Note: See TracChangeset for help on using the changeset viewer.