source: trunk/MagicSoft/Mars/mbadpixels/MBadPixelsPix.cc@ 3879

Last change on this file since 3879 was 3839, checked in by gaug, 20 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// BIT(1 ): kHiGainNotCalibrated : Any High Gain signal is not calibrated and cannot be used
46// BIT(2 ): kLoGainNotCalibrated : Any Low Gain signal is not calibrated and cannot be used
47// BIT(3 ): kHiGainNotFitted : Any High Gain signal is calibrated without a Gauss Fit to the signal distribution
48// BIT(4 ): kLoGainNotFitted : Any Low Gain signal is calibrated without a Gauss Fit to the signal distribution
49// BIT(5 ): kHiGainOscillating : The High Gain signals fourier transform showed abnormal behavior
50// BIT(6 ): kLoGainOscillating : The Low Gain signals fourier transform showed abnormal behavior
51// BIT(7 ): kLoGainSaturation : The Low Gain signals were saturated during calibration
52// BIT(8 ): kChargeIsPedestal : The calibration signal contained only pedestals - presumably dead pixel
53// BIT(10): kChargeRelErrNotValid: The relative error of the derived charge was too large or too small
54// BIT(11): kChargeSigmaNotValid : The sigma of the pedestal distribution smaller than the pedestal RMS - presumably a pixel with a star in its FOV only during the pedestal taking
55// BIT(12): kMeanTimeInFirstBin : The signal has its mean maximum in the first used FADC slice - signal extractor bad
56// BIT(13): kMeanTimeInLast2Bins : The signal has its mean maximum in the last two used FADC slice - signal extractor bad
57// BIT(14): kDeviatingNumPhes : The calculated number of photo-electrons deviates too much from the mean - inconsistency
58// BIT(15): kDeviatingFFactor : The calculated overall F-Factor deviates too much from the mean - inconsistency
59// BIT(16): kConversionHiLoNotValid: The calibrated Conversion between Hi-Gain and Low Gain gives absurd results
60//
61// These bits can be called with the enum MBadPixelsPix::UncalibratedType_t in combination
62// with the function IsUncalibrated(MBadPixelsPix::UncalibratedTupe_t), e.g.
63// MBadPixelsPix::IsUncalibrated(MBadPixelsPix::kHiGainNotCalibrated) asks if the Hi Gain signal
64// could be calibrated.
65//
66// Two additional functions yield specific calibration information:
67// * IsCalibrationSignalOK() asks if the extracted calibration signal showed any inconsistency
68// * IsCalibrationResultOK() asks if the applied calibration can be used at all.
69//
70/////////////////////////////////////////////////////////////////////////////
71#include "MBadPixelsPix.h"
72
73#include "MLog.h"
74#include "MLogManip.h"
75
76ClassImp(MBadPixelsPix);
77
78using namespace std;
79
80const Int_t MBadPixelsPix::fgRunMask =
81 MBadPixelsPix::kUnsuitableRun |
82 MBadPixelsPix::kUnreliableRun;
83
84// ------------------------------------------------------------------------
85//
86// Initialize Pixel to be Ok.
87//
88MBadPixelsPix::MBadPixelsPix(const char* name, const char* title)
89 : fInfo(5)
90{
91 fName = name ? name : "MBadPixelsPix";
92 fTitle = title ? title : "Container storing bad pixel information for a single pixel";
93
94 fInfo[1] = 0;
95}
96
97// ------------------------------------------------------------------------
98//
99// Invalidate all bits which are not run-wise. This will be called for
100// all entries in the parameter list, just before each time the task-list
101// is executed.
102//
103void MBadPixelsPix::Reset()
104{
105 fInfo[0] &= fgRunMask;
106}
107
108// ------------------------------------------------------------------------
109//
110// Invalidate values (set=0 which mean Pixel OK)
111//
112void MBadPixelsPix::Clear(Option_t *o)
113{
114 fInfo.Reset(0);
115}
116
117// ------------------------------------------------------------------------
118//
119// Merge (bitwise or) the information in pix into this pixel.
120//
121void MBadPixelsPix::Merge(const MBadPixelsPix &pix)
122{
123 const Int_t n = pix.fInfo.GetSize();
124 if (n>fInfo.GetSize())
125 fInfo.Set(n);
126
127 for (int i=0; i<n; i++)
128 fInfo[i] |= pix.fInfo[i];
129}
130
131
132/****************************************************************************
133 This is a collection of possible defects for later use
134 ****************************************************************************/
135
136/*
137 1 PMT defective.
138 2 Preamplifier defective.
139 3 Optical link defective.
140 4 HV cannot be set.
141 7 HV unstable.
142 5 HV readout defective.
143 8 DC unstable.
144 6 DC readout defective.
145 9 Discriminator threshold cannot be set.
146 10 Trigger delay cannot be set.
147 11 Discriminator gives no output.
148 <-? 12 Pixel out of L1T.
149 13 FADC defective.
150 14 FADC board digital information defective.
151 */
152
153/*
154 1 Pixel shows no signal
155 */
156
157/*
158 MCalibrationCalc - valid for the result of a calibration run:
159
160 3 Hi-Gain saturated, no LoGain available
161
162 4 Conversion Factor HiGain - LoGain not valid
163
164 5 Cannot be calibrated at all
165 6 Cannot be fitted - calibrated using Histogram Mean and RMS
166
167 */
168
169/*
170
171Hardware 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...
172Preamplifier defective.
173Optical link defective.
174HV cannot be set.
175HV readout defective.
176DC readout defective.
177Discriminator threshold cannot be set.
178Trigger delay cannot be set.
179Discriminator gives no output.
180FADC defective.
181FADC board digital information defective.
182Pixel out of L1T. (this is an important information, but not necessarily a defect, is it?)
183
184In addition here are some cases which I think can be detected by software:
185- no signal
186- wrong signal
187- hv problem
188- dc problem
189- Conversion Factor HiGain - LoGain not valid (what does this mean?)
190- No calibration possible
191- No fit possible - calibrated using Histogram Mean and RMS
192- Mean Charge smaller than PedRMS
193- Sigma Charge smaller than PedRMS
194- Calib.methods inconsistency (there are in pricipal 6 combinations... do we need 6 bits?)
195- Gains oscillate (what does it mean?)
196- Sigma Arrival Time bigger than FADC window (from calib)
197- Mean Arrival Time at edge of FADC window (from calib)
198*/
Note: See TracBrowser for help on using the repository browser.