QualityCut.h
1 /* -*- C++ -*-.*********************************************************************************************
2  Author: Ben Strutt
3  Email: strutt@physics.ucla.edu
4 
5  Description:
6  My ANITA-3 data quality cuts, to remove bad events
7 ***********************************************************************************************************/
8 
9 #ifndef QUALITYCUTS_H
10 #define QUALITYCUTS_H
11 
12 #include "TObject.h"
13 #include "TString.h"
14 
15 #include "FilteredAnitaEvent.h"
16 #include "AnalysisWaveform.h"
17 #include "RootTools.h"
18 
19 #include "AnitaEventSummary.h"
20 
21 namespace Acclaim{
22 
23 
34  class QualityCut : public TObject {
35 
36  public:
37  static Bool_t applyAll(const UsefulAnitaEvent* usefulEvent, AnitaEventSummary* sum=NULL); // static utility function, applies all cuts defined here
38  static Bool_t passedAll(const AnitaEventSummary* sum, bool describe = false); // static utility function, reads flags in AnitaEventSummary, returns true if event passed
39 
40 
41 
42  QualityCut(){;}
43  virtual ~QualityCut(){;}
44  // virtual void apply(FilteredAnitaEvent* fEv) = 0;
45  virtual void apply(const UsefulAnitaEvent* useful, AnitaEventSummary* sum = NULL) = 0;
46  TString description;
47  Bool_t eventPassesCut;
48  ClassDef(QualityCut, 1)
49  };
50 
51 
52 
59  class SurfSaturationCut : public QualityCut {
60  ClassDef(Acclaim::SurfSaturationCut, 1);
61 
62  protected:
63  double maxLimit;
64  double minLimit;
65  double asymLimit;
66 
67  double maxVolts;
68  int maxVoltsAnt;
69  AnitaPol::AnitaPol_t maxVoltsPol;
70 
71  double minVolts;
72  int minVoltsAnt;
73  AnitaPol::AnitaPol_t minVoltsPol;
74 
75  double asymVolts;
76  int asymVoltsAnt;
77  AnitaPol::AnitaPol_t asymVoltsPol;
78 
79  public:
81  virtual ~SurfSaturationCut(){;}
82  // virtual void apply(FilteredAnitaEvent* fEv);
83  virtual void apply(const UsefulAnitaEvent* useful, AnitaEventSummary* sum = NULL);
84  };
85 
86 
87 
88 
89 
98  class PayloadBlastCut : public QualityCut {
99  ClassDef(Acclaim::PayloadBlastCut, 2);
100 
101  protected:
102  double ratioCutHigh;
103  double ratioCutLow;
104 
105 
106  double maxRatio;
107  int maxRatioPhi;
108  AnitaPol::AnitaPol_t maxRatioPol;
109 
110  public:
111  PayloadBlastCut();
112  virtual ~PayloadBlastCut(){;}
113  // virtual void apply(FilteredAnitaEvent* fEv);
114  virtual void apply(const UsefulAnitaEvent* useful, AnitaEventSummary* sum = NULL);
115  };
116 
117 
118 
126  class NumPointsCut : public QualityCut {
127  ClassDef(Acclaim::NumPointsCut, 1);
128 
129  protected:
130  int numPointsCutLow; // presumably don't need a cut on the other side of this...
131  int minNumPoints;
132 
133  public:
134  NumPointsCut();
135  virtual ~NumPointsCut(){;}
136  // virtual void apply(FilteredAnitaEvent* fEv);
137  virtual void apply(const UsefulAnitaEvent* useful, AnitaEventSummary* sum = NULL);
138  };
139 
140 }
141 
142 #endif //ANALYSISCUTS
virtual void apply(const UsefulAnitaEvent *useful, AnitaEventSummary *sum=NULL)
Definition: QualityCut.cxx:217
static Bool_t applyAll(const UsefulAnitaEvent *usefulEvent, AnitaEventSummary *sum=NULL)
Applies all the event quality cuts in succession, this should be the primary interface.
Definition: QualityCut.cxx:45
Tries to find unphysical spikes in a waveform that are characteristic of a kind of digitiser corrupti...
Definition: QualityCut.h:59
virtual void apply(const UsefulAnitaEvent *useful, AnitaEventSummary *sum=NULL)
Applies the SurfSaturation cut.
Definition: QualityCut.cxx:125
virtual void apply(const UsefulAnitaEvent *useful, AnitaEventSummary *sum=NULL)
Apply the number of points cut.
Definition: QualityCut.cxx:339
Namespace which wraps everything in the library.
Base class from which all my quality cuts inherit.
Definition: QualityCut.h:34
UsefulAnitaEvent – The Calibrated Useful Anita Event object.
Tries to determine whether an event is a payload blast.
Definition: QualityCut.h:98
Removes events which have short waveforms.
Definition: QualityCut.h:126
static Bool_t passedAll(const AnitaEventSummary *sum, bool describe=false)
Reads the flags set in AnitaEventSummary, returns true if the event passed all quality cuts...
Definition: QualityCut.cxx:73
Common analysis format between UCorrelator and Acclaim.
NumPointsCut()
Constructor for the number of points cut, contains some hard coded numbers.
Definition: QualityCut.cxx:318
enum AnitaPol::EAnitaPol AnitaPol_t
Polarisation enumeration.
SurfSaturationCut()
Constructor for the SurfSaturation cut, sets some hard coded default values.
Definition: QualityCut.cxx:93