00001 #ifndef ANP_FIDUCIALCUT_H
00002 #define ANP_FIDUCIALCUT_H
00003
00004
00005
00006
00007
00008
00009
00010 #include <iostream>
00011 #include <string>
00012
00013 class Registry;
00014
00015 namespace Anp
00016 {
00017 class FiducialCut
00018 {
00019 public:
00020
00021 enum Strategy
00022 {
00023 kUnknown = 0,
00024 kDisk = 1,
00025 kSquareXY = 2,
00026 kSquareUV = 3,
00027 kCC2008 = 4
00028 };
00029
00030 public:
00031
00032 FiducialCut();
00033 ~FiducialCut();
00034
00035 Strategy GetStrategy() const;
00036
00037 bool Check() const;
00038 bool Count() const;
00039 bool Erase() const;
00040 bool Valid() const;
00041
00042 bool SelectStdHep() const;
00043 bool UseTrackVtx() const;
00044 int FiducialKey() const;
00045
00046 double NearMinZ() const;
00047 double NearMaxZ() const;
00048 double NearRadius() const;
00049 double NearSpanU() const;
00050 double NearSpanV() const;
00051 double NearBeamX() const;
00052 double NearBeamY() const;
00053
00054 double FarSM1MinZ() const;
00055 double FarSM1MaxZ() const;
00056 double FarSM2MinZ() const;
00057 double FarSM2MaxZ() const;
00058
00059 double FarMaxRadius() const;
00060 double FarMinRadius() const;
00061
00062 double TrackZOffset() const;
00063
00064 bool Init(std::string path = "", bool quiet = true);
00065
00066 void Print(std::ostream &os = std::cout) const;
00067
00068 private:
00069
00070 std::string fPath;
00071
00072 Strategy fStrategy;
00073
00074 bool fCheck;
00075 bool fCount;
00076 bool fErase;
00077 bool fValid;
00078
00079 bool fSelectStdHep;
00080 bool fUseTrackVtx;
00081 int fFiducialKey;
00082
00083 double fNearMinZ;
00084 double fNearMaxZ;
00085 double fNearRadius;
00086 double fNearSpanU;
00087 double fNearSpanV;
00088 double fNearBeamX;
00089 double fNearBeamY;
00090
00091 double fFarSM1MinZ;
00092 double fFarSM1MaxZ;
00093 double fFarSM2MinZ;
00094 double fFarSM2MaxZ;
00095
00096 double fFarMaxRadius;
00097 double fFarMinRadius;
00098
00099 double fTrackZOffset;
00100 };
00101
00102
00103
00104
00105 inline FiducialCut::Strategy FiducialCut::GetStrategy() const { return fStrategy; }
00106
00107 inline bool FiducialCut::Check() const { return fCheck; }
00108 inline bool FiducialCut::Count() const { return fCount; }
00109 inline bool FiducialCut::Erase() const { return fErase; }
00110 inline bool FiducialCut::Valid() const { return fValid; }
00111
00112 inline bool FiducialCut::SelectStdHep() const { return fSelectStdHep; }
00113 inline bool FiducialCut::UseTrackVtx() const { return fUseTrackVtx; }
00114 inline int FiducialCut::FiducialKey() const { return fFiducialKey; }
00115
00116 inline double FiducialCut::NearMinZ() const { return fNearMinZ; }
00117 inline double FiducialCut::NearMaxZ() const { return fNearMaxZ; }
00118 inline double FiducialCut::NearRadius() const { return fNearRadius; }
00119 inline double FiducialCut::NearSpanU() const { return fNearSpanU; }
00120 inline double FiducialCut::NearSpanV() const { return fNearSpanV; }
00121 inline double FiducialCut::NearBeamX() const { return fNearBeamX; }
00122 inline double FiducialCut::NearBeamY() const { return fNearBeamY; }
00123
00124 inline double FiducialCut::FarSM1MinZ() const { return fFarSM1MinZ; }
00125 inline double FiducialCut::FarSM1MaxZ() const { return fFarSM1MaxZ; }
00126 inline double FiducialCut::FarSM2MinZ() const { return fFarSM2MinZ; }
00127 inline double FiducialCut::FarSM2MaxZ() const { return fFarSM2MaxZ; }
00128
00129 inline double FiducialCut::FarMaxRadius() const { return fFarMaxRadius; }
00130 inline double FiducialCut::FarMinRadius() const { return fFarMinRadius; }
00131
00132 inline double FiducialCut::TrackZOffset() const { return fTrackZOffset; }
00133 }
00134
00135 #endif