source: trunk/MagicSoft/Mars/manalysis/MCerPhotCalc.cc@ 1107

Last change on this file since 1107 was 1092, checked in by blanch, 23 years ago
Change in the methode to substract the pedestal. The new methode is valid either for MC data and real data but only for the current integration (GetSumHiGainSamples()).
File size: 4.7 KB
Line 
1/* ======================================================================== *\
2!
3! *
4! * This file is part of MARS, the MAGIC Analysis and Reconstruction
5! * Software. It is distributed to you in the hope that it can be a useful
6! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
7! * It is distributed WITHOUT ANY WARRANTY.
8! *
9! * Permission to use, copy, modify and distribute this software and its
10! * documentation for any purpose is hereby granted without fee,
11! * provided that the above copyright notice appear in all copies and
12! * that both that copyright notice and this permission notice appear
13! * in supporting documentation. It is provided "as is" without express
14! * or implied warranty.
15! *
16!
17!
18! Author(s): Thomas Bretz 12/2000 <mailto:tbretz@uni-sw.gwdg.de>
19!
20! Copyright: MAGIC Software Development, 2000-2001
21!
22!
23\* ======================================================================== */
24
25//////////////////////////////////////////////////////////////////////////////
26// //
27// MCerPhotCalc //
28// //
29// This is a task which calculates the number of photons from the FADC //
30// time slices. At the moment it integrates simply the FADC values. //
31// //
32// Input Containers: //
33// MRawEvtData, MPedesdtalCam //
34// //
35// Output Containers: //
36// MCerPhotEvt //
37// //
38//////////////////////////////////////////////////////////////////////////////
39
40#include "MCerPhotCalc.h"
41
42#include "MParList.h"
43
44#include "MLog.h"
45#include "MLogManip.h"
46
47#include "MRawRunHeader.h"
48#include "MRawEvtData.h" // MRawEvtData::GetNumPixels
49#include "MCerPhotEvt.h"
50#include "MPedestalPix.h"
51#include "MPedestalCam.h"
52#include "MRawEvtPixelIter.h"
53
54ClassImp(MCerPhotCalc);
55
56// --------------------------------------------------------------------------
57//
58// Default constructor.
59//
60MCerPhotCalc::MCerPhotCalc(const char *name, const char *title)
61{
62 fName = name ? name : "MCerPhotCalc";
63 fTitle = title ? title : "Task to calculate Cerenkov photons from raw data";
64
65 AddToBranchList("fHiGainPixId");
66 AddToBranchList("fLoGainPixId");
67 AddToBranchList("fHiGainFadcSamples");
68 AddToBranchList("fLoGainFadcSamples");
69
70}
71
72// --------------------------------------------------------------------------
73//
74// The PreProcess searches for the following input containers:
75// - MRawRunHeader
76// - MRawEvtData
77// - MPedestalCam
78//
79// The following output containers are also searched and created if
80// they were not found:
81// - MCerPhotEvt
82//
83Bool_t MCerPhotCalc::PreProcess(MParList *pList)
84{
85 MRawRunHeader *RunHeader = (MRawRunHeader*)pList->FindObject("MRawRunHeader");
86 if (!RunHeader)
87 {
88 *fLog << dbginf << "MRawRunHeader not found... aborting." << endl;
89 return kFALSE;
90 }
91 fNumLoGainFadcSlices= RunHeader->GetNumSamplesLoGain();
92 fNumHiGainFadcSlices= RunHeader->GetNumSamplesHiGain();
93
94 fRawEvt = (MRawEvtData*)pList->FindObject("MRawEvtData");
95 if (!fRawEvt)
96 {
97 *fLog << dbginf << "MRawEvtData not found... aborting." << endl;
98 return kFALSE;
99 }
100
101 fPedestals = (MPedestalCam*)pList->FindObject("MPedestalCam");
102 if (!fPedestals)
103 {
104 *fLog << dbginf << "MPedestalCam not found... aborting." << endl;
105 return kFALSE;
106 }
107
108 fCerPhotEvt = (MCerPhotEvt*)pList->FindCreateObj("MCerPhotEvt");
109 if (!fCerPhotEvt)
110 return kFALSE;
111
112 return kTRUE;
113}
114
115// --------------------------------------------------------------------------
116//
117// Calculate the integral of the FADC time slices and store them as a new
118// pixel in the MCerPhotEvt container.
119//
120Bool_t MCerPhotCalc::Process()
121{
122 fCerPhotEvt->InitSize(fRawEvt->GetNumPixels());
123
124 MRawEvtPixelIter pixel(fRawEvt);
125
126 while (pixel.Next())
127 {
128
129 const UInt_t pixid = pixel.GetPixelId();
130
131 const MPedestalPix &ped = (*fPedestals)[pixid];
132
133 Float_t nphot = (Float_t)pixel.GetSumHiGainSamples();
134
135 if(nphot>0) nphot -= fNumHiGainFadcSlices*ped.GetMean();
136
137 fCerPhotEvt->AddPixel(pixid, nphot, sqrt(fNumHiGainFadcSlices)*ped.GetMeanRms());
138
139 // FIXME! Handling of Lo Gains is missing!
140 }
141
142 fCerPhotEvt->SetReadyToSave();
143
144 return kTRUE;
145}
Note: See TracBrowser for help on using the repository browser.