source: branches/removing_cpp11_features/mbadpixels/MBadPixelsPix.cc@ 18086

Last change on this file since 18086 was 8423, checked in by tbretz, 18 years ago
*** empty log message ***
File size: 7.8 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, 1/2004 <mailto:tbretz@astro.uni-wuerzburg.de>
19! Markus Gaug, 3/2004 <mailto:markus@ifae.es>
20!
21! Copyright: MAGIC Software Development, 2000-2004
22!
23!
24\* ======================================================================== */
25/////////////////////////////////////////////////////////////////////////////
26//
27// MBadPixelsPix
28//
29// The bits of an integer array fInfo are used to declare and inform about
30// possible defects in a pixel. Default and absence of defects create an array
31// of zeros.
32//
33// The first index (fInfo[0]) holds general information which is coded as follows:
34// * BIT(1): Unsuitable Run: The pixel is not suited for analysis for the entire run
35// * BIT(2): Unsuitable Evt: The pixel is not suited for analysis for the current event
36// * BIT(3): Unreliable Run: The pixel can in principle be used for analysis, although
37// previous analysis steps have yielded certain inconsistencies
38//
39// These bits can be called with the enum MBadPixelsPix::UnsuitableTupe_t in combination
40// with the function IsUnsuitable(MBadPixelsPix::UnsuitableTupe_t), e.g.
41// MBadPixelsPix::IsUnsuitalbe(MBadPixelsPix::kUnsuitableRun) asks if the first bit is set.
42//
43// The second index (fInfo[1]) hold information acquired during the calibration. The bits
44// are coded in the following form:
45//
46//
47// * Set bits leading to an unsuitable flag:
48//
49// BIT(7 ): kLoGainSaturation : The Low Gain signals were saturated during calibration
50// BIT(8 ): kChargeIsPedestal : The calibration signal contained only pedestals - presumably dead pixel
51// BIT(12): kMeanTimeInFirstBin : The signal has its mean maximum in the first used FADC slice - signal extractor bad
52// BIT(13): kMeanTimeInLast2Bins : The signal has its mean maximum in the last two used FADC slice - signal extractor bad
53// BIT(14): kDeviatingNumPhes : The calculated number of phes deviates by more than +6-5.5 sigma of the phes mean of the same area idx.
54// BIT(19): kHiGainOverFlow : The Hi-Gain calibration histogram showed overflow in more than 0.5% of the events
55// BIT(20): kLoGainOverFlow : The Lo-Gain calibration histogram showed overflow in more than 0.5% of the events
56// BIT(23): kDeadPedestalRms : The pedestal RMS was 4.5 sigma below or 25 sigma above the average per area idx.
57// BIT(24): kFluctuatingArivalTimes: The RMS of the position of the pulse maximum is larger than 3.5 FADC slices.
58// BIT(24): kLoGainBlackout : A high gain saturated pixel had too many blackout events in the low gain
59//
60//
61// * Set bits leading to an unreliable flag:
62//
63// BIT(1 ): kHiGainNotFitted : Any High Gain signal is calibrated without a Gauss Fit to the signal distribution
64// BIT(2 ): kLoGainNotFitted : Any Low Gain signal is calibrated without a Gauss Fit to the signal distribution
65// BIT(3 ): kRelTimeNotFitted : Any High Gain signal's arrival times are calibrated without a Gauss Fit
66// BIT(4 ): kHiGainOscillating : The High Gain signals fourier transform showed abnormal behavior
67// BIT(5 ): kLoGainOscillating : The Low Gain signals fourier transform showed abnormal behavior
68// BIT(6 ): kRelTimeOscillating : The High Gain arrival times fourier transform showed abnormal behavior
69// BIT(11): kChargeSigmaNotValid : The sigma of the signal distribution is smaller than the pedestal RMS - presumably a pixel with a star in its FOV only during the pedestal taking
70// BIT(16): kDeviatingFFactor : The calculated overall F-Factor deviates too much from the mean - inconsistency
71// BIT(15): kDeviatingNumPhots : The calculated number of calibrated photons deviates too much from the mean - inconsistency
72//
73//
74// * Set bits leading to not useable low-gain signal:
75//
76// BIT(17): kConversionHiLoNotValid: The inter-calibration constant between Hi-Gain and Low Gain does not exist.
77//
78// These bits can be called with the enum MBadPixelsPix::UncalibratedType_t in combination
79// with the function IsUncalibrated(MBadPixelsPix::UncalibratedTupe_t), e.g.
80// MBadPixelsPix::IsUncalibrated(MBadPixelsPix::kHiGainNotCalibrated) asks if the Hi Gain signal
81// could be calibrated.
82//
83// The third index (fInfo[2]) holds information about possible hardware mulfunctionning. The bits
84// are coded in the following form:
85// BIT(1 ): kHVNotNominal : The HV deviates more than 3% from the nominal value.
86//
87/////////////////////////////////////////////////////////////////////////////
88#include "MBadPixelsPix.h"
89
90#include "MLog.h"
91#include "MLogManip.h"
92
93ClassImp(MBadPixelsPix);
94
95using namespace std;
96
97const Int_t MBadPixelsPix::fgRunMask =
98 MBadPixelsPix::kUnsuitableRun |
99 MBadPixelsPix::kUnreliableRun;
100
101// ------------------------------------------------------------------------
102//
103// Initialize Pixel to be Ok.
104//
105MBadPixelsPix::MBadPixelsPix(const char* name, const char* title)
106{
107 fName = name ? name : "MBadPixelsPix";
108 fTitle = title ? title : "Container storing bad pixel information for a single pixel";
109
110 fInfo.Set(3);
111
112}
113
114// ------------------------------------------------------------------------
115//
116// Invalidate all bits which are not run-wise. This will be called for
117// all entries in the parameter list, just before each time the task-list
118// is executed.
119//
120void MBadPixelsPix::Reset()
121{
122 fInfo[0] &= fgRunMask;
123}
124
125// ------------------------------------------------------------------------
126//
127// Invalidate values (set=0 which mean Pixel OK)
128//
129void MBadPixelsPix::Clear(Option_t *o)
130{
131 if (TString(o).IsNull())
132 {
133 fInfo[1] &= BIT(0);
134 fInfo[0] = fInfo[1] ? kUnsuitableRun : 0;
135 fInfo[2] = 0;
136 }
137 else
138 fInfo.Reset(0);
139}
140
141// ------------------------------------------------------------------------
142//
143// Merge (bitwise or) the information in pix into this pixel.
144//
145void MBadPixelsPix::Merge(const MBadPixelsPix &pix)
146{
147 const Int_t n = pix.fInfo.GetSize();
148 if (n>fInfo.GetSize())
149 fInfo.Set(n);
150
151 for (int i=0; i<n; i++)
152 fInfo[i] |= pix.fInfo[i];
153}
154
155
156/****************************************************************************
157 This is a collection of possible defects for later use
158 ****************************************************************************/
159
160/*
161 1 PMT defective.
162 2 Preamplifier defective.
163 3 Optical link defective.
164 4 HV cannot be set.
165 7 HV unstable.
166 5 HV readout defective.
167 8 DC unstable.
168 6 DC readout defective.
169 9 Discriminator threshold cannot be set.
170 10 Trigger delay cannot be set.
171 11 Discriminator gives no output.
172 <-? 12 Pixel out of L1T.
173 13 FADC defective.
174 14 FADC board digital information defective.
175 */
176
177/*
178 1 Pixel shows no signal
179 */
180
181/*
182
183Hardware defects which cannot be detected automatically by software. This might be stored at least in the data-base. I think we should wait until we implement these things...
184Preamplifier defective.
185Optical link defective.
186HV cannot be set.
187HV readout defective.
188DC readout defective.
189Discriminator threshold cannot be set.
190Trigger delay cannot be set.
191Discriminator gives no output.
192FADC defective.
193FADC board digital information defective.
194Pixel out of L1T. (this is an important information, but not necessarily a defect, is it?)
195
196*/
Note: See TracBrowser for help on using the repository browser.