Changeset 2640 for trunk/MagicSoft


Ignore:
Timestamp:
12/11/03 13:58:40 (21 years ago)
Author:
gaug
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r2637 r2640  
    44
    55                                                 -*-*- END OF LINE -*-*-
     6 2003/12/11: Markus Gaug
     7   * manalysis/MExtractSignal, MExtractedSignalPix
     8        - Store number of used FADC slices (HIGain, LoGAin)
     9        - calculate signal with only 6 most significant slices (2 before, 4 after the maximum)
     10
     11
    612 2003/12/11: Thomas Bretz
    713
  • trunk/MagicSoft/Mars/manalysis/MExtractSignal.cc

    r2631 r2640  
    5757//
    5858MExtractSignal::MExtractSignal(const char *name, const char *title)
    59   : fSaturationLimit(255),
    60     fConversionHiLo(10.)
     59  : fBefore(2), fAfter(4), fSaturationLimit(254), fConversionHiLo(10.)
    6160{
    6261
     
    123122    }
    124123
    125     fNumHiGainSamples =  fRunHeader->GetNumSamplesHiGain();
    126     fNumLoGainSamples =  fRunHeader->GetNumSamplesLoGain();
    127     fSqrtHiGainSamples =  TMath::Sqrt((float)fNumHiGainSamples);
    128     fSqrtLoGainSamples =  TMath::Sqrt((float)fNumLoGainSamples);
     124    //fNumHiGainSamples =  fRunHeader->GetNumSamplesHiGain();
     125    //fNumLoGainSamples =  fRunHeader->GetNumSamplesLoGain();
     126    fNumHiGainSamples =  fAfter+fBefore;
     127    fNumLoGainSamples =  fAfter+fBefore;
     128
     129    fSqrtHiGainSamples = TMath::Sqrt((float)fNumHiGainSamples);
     130    fSqrtLoGainSamples = TMath::Sqrt((float)fNumLoGainSamples);
    129131
    130132    //
     
    156158        UShort_t satHi = 0;
    157159        UShort_t satLo = 0;
    158         Float_t  sum   = 0.;
    159         Float_t sumerr = 0.;
     160
     161        Byte_t *ptr   = pixel.GetHiGainSamples();
     162        Byte_t *max   = ptr + pixel.GetIdxMaxHiGainSample();
     163        Byte_t *end   = ptr + fRawEvt->GetNumHiGainSamples();
     164        Byte_t *first;
     165        Byte_t *last;
     166
     167        UInt_t  sumHi   = 0;
     168        UInt_t  sumLo   = 0;
    160169
    161170        const Int_t pixid = pixel.GetPixelId();
     
    165174        const Float_t pedes   = ped.GetPedestal();
    166175        const Float_t pedrms  = ped.GetPedestalRms();
     176
     177        if (max-3 < ptr)
     178          {
     179            first = ptr+3;
     180            last  = ptr+3+fAfter+fBefore;
     181          }
     182        else if (max+fAfter-1 > end)
     183          {
     184            first = end-fAfter-fBefore-1;
     185            last  = end-1;
     186          }
     187        else
     188          {
     189            first = max-fBefore;
     190            last  = max+fAfter;
     191          }
     192
     193        for (ptr=first;ptr<last;ptr++)
     194          {
     195            sumHi += *ptr;
     196            if (*ptr >= fSaturationLimit)
     197              satHi++;
     198          }
     199
     200        ptr   = pixel.GetLoGainSamples();
     201        max   = ptr+pixel.GetIdxMaxLoGainSample();
     202        end   = ptr+fRawEvt->GetNumLoGainSamples();
     203
     204        if (max-4 < ptr)
     205          {
     206            first = ptr+4;
     207            last  = ptr+4+fAfter+fBefore;
     208          }
     209        else if (max+fAfter > end)
     210          {
     211            first = end-fAfter-fBefore;
     212            last  = end;
     213          }
     214        else
     215          {
     216            first = max-fBefore;
     217            last  = max+fAfter;
     218          }
     219
     220        for (ptr=first;ptr<last;ptr++)
     221          {
     222            sumLo += *ptr;
     223            if (*ptr >= fSaturationLimit)
     224              {
     225                *fLog << err << dbginf
     226                      << "Warning: Saturation of Lo Gain reached in pixel: "
     227                      << pixid << " " << "   sum = " << sumLo << endl;
     228                satLo++;
     229              }
     230          }
    167231
    168232        //
     
    171235        //
    172236
    173         UInt_t max  = pixel.GetMaxHiGainSample();
    174 
    175         if (max <= fSaturationLimit)  // take Hi Gain, no saturation
    176           {
    177             sum = (float)pixel.GetSumHiGainSamples() - pedes*fNumHiGainSamples; 
    178             sumerr = pedrms*fSqrtHiGainSamples;
    179           }
    180         else                          // Lo Gain
    181           {
    182 
    183             satHi++;
    184 
    185             sum = (float)pixel.GetSumLoGainSamples() - pedes*fNumLoGainSamples ;
    186             sum *= fConversionHiLo;
    187 
    188             sumerr = pedrms*fSqrtLoGainSamples;
    189 
    190             max = pixel.GetMaxLoGainSample();
    191 
    192             if (max > fSaturationLimit)
    193               {
    194                 *fLog << err << dbginf
    195                       << "Warning: Saturation of Lo Gain reached in pixel: "
    196                       << pixid << " " << "   sum = " << sum << endl;
    197                 satLo++;
    198               }
    199 
    200           }
    201 
    202         pix.SetGainSaturation((satHi),(satHi),(satLo));
    203         pix.SetExtractedSignal(sum,sumerr);
     237        pix.SetExtractedSignal((float)sumHi - pedes*(float)fNumHiGainSamples,
     238                               pedrms*fSqrtHiGainSamples,
     239                               ((float)sumLo - pedes*(float)fNumLoGainSamples)*fConversionHiLo,
     240                               pedrms*fSqrtLoGainSamples
     241                               );
     242
     243        pix.SetGainSaturation((satHi),satHi,satLo);
    204244
    205245      } /* while (pixel.Next()) */
    206246
     247
     248    fSignals->SetNumUsedFADCSlices(fNumHiGainSamples);
    207249    fSignals->SetReadyToSave();
    208250
  • trunk/MagicSoft/Mars/manalysis/MExtractSignal.h

    r2634 r2640  
    3737  Float_t fSqrtLoGainSamples;
    3838
     39  Byte_t fBefore;
     40  Byte_t fAfter;
     41
    3942  Byte_t  fSaturationLimit;
    4043  Float_t fConversionHiLo;
  • trunk/MagicSoft/Mars/manalysis/MExtractedSignalCam.cc

    r2627 r2640  
    133133    {
    134134    case 0:
    135         val = (*this)[idx].GetExtractedSignal();
     135        val = (*this)[idx].GetExtractedSignalHiGain();
    136136        break;
    137137    case 1:
    138         val = (*this)[idx].GetExtractedSignalError();
     138        val = (*this)[idx].GetExtractedSignalHiGainError();
     139        break;
     140    case 2:
     141        val = (*this)[idx].GetExtractedSignalLoGain();
     142        break;
     143    case 3:
     144        val = (*this)[idx].GetExtractedSignalLoGainError();
    139145        break;
    140146    default:
  • trunk/MagicSoft/Mars/manalysis/MExtractedSignalCam.h

    r2627 r2640  
    1616    TClonesArray *fArray; // FIXME: Change TClonesArray away from a pointer?
    1717
     18    Byte_t fNumUsedHiGainFADCSlices;
     19    Byte_t fNumUsedLoGainFADCSlices;
     20
    1821public:
    1922
     
    2528    void InitSize(const UInt_t i);
    2629    Int_t GetSize() const;
     30
     31    Byte_t GetNumUsedFADCSlices()          { return fNumUsedHiGainFADCSlices; }
     32    Byte_t GetNumUsedHiGainFADCSlices()    { return fNumUsedHiGainFADCSlices; }
     33    Byte_t GetNumUsedLoGainFADCSlices()    { return fNumUsedLoGainFADCSlices; }
     34    SetNumUsedHiGainFADCSlices(Byte_t numh, Byte_t numl)   
     35                                           {
     36                                             fNumUsedHiGainFADCSlices = numh;
     37                                             fNumUsedLoGainFADCSlices = numl; 
     38                                           }
    2739
    2840    MExtractedSignalPix &operator[](Int_t i);
Note: See TracChangeset for help on using the changeset viewer.