Ignore:
Timestamp:
03/04/07 14:01:14 (18 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.