00001
00029 #ifndef BDTARGET_H
00030 #define BDTARGET_H
00031
00032 #include <BeamDataUtil/BDProcessor.h>
00033 #include <BeamDataUtil/BDProfMon.h>
00034
00035 class RawBeamMonHeaderBlock;
00036 class RawBeamMonBlock;
00037 class RawBeamData;
00038
00039 #include <vector>
00040
00041 class BDTarget : public BDProcessor {
00042 public:
00043 BDTarget();
00044 virtual ~BDTarget();
00045
00051 enum BeamType {
00052 kUnknown = 0,
00053 kLE,
00054 kME,
00055 kHE,
00056 kPsME,
00057 kPsHE
00058 };
00059
00060
00061
00063 void SetSpill(const RawBeamMonHeaderBlock& rbmhb,
00064 const RawBeamMonBlock& rbmb);
00065
00066 BDProfMon& GetPM121() { return fPM121; }
00067 BDProfMon& GetPMTGT() { return fPMTGT; }
00068
00074 void BpmProjection(std::vector<double> &xp, std::vector<double> &yp,
00075 std::vector<double> &xi, std::vector<double> &yi) const;
00076
00083 int ProfileProjection(double &x, double &y, double &xrms, double &yrms) const;
00084
00097 BeamType TargetIn(bool &is_in, double& z_location, double spilltime=0) const;
00098
00099 private:
00100 const RawBeamData *fBpms[6], *fPMs[2], *fTgt[3];
00101 BDProfMon fPM121, fPMTGT;
00102
00103
00104 int GetNbatches() const;
00105 };
00106
00107
00108 #endif // BDTARGET_H