#include #include #include //#include "TObject.h" #ifndef BReconClassesDef class BPeak { private: public: double pos; double epos; float *data; int sleft; int sright; int max; int flagged; BPeak(); ~BPeak(); double Integral(); void GetPosition(float=0, bool=false); void Print(); // ClassDef(BPeak,1) }; class BHitMap { private: public: int NumCh; float *HitMap; unsigned char *BadCh; BHitMap(int=130); ~BHitMap(); void Reset(int=0); void AddNoise(); void Set(int,float *); void Copy(float *); void BadChannels(unsigned char *); int FindPeaks(BPeak *[],double=0.01,double=0.1); // ClassDef(BHitMap,1) }; class BPHole { private: public: double r[3]; double st; double ro; double ri; BPHole(double x,double y, double z, double x1=0, double x2=0) {r[0]=x; r[1]=y; r[2]=z; ro=x1; ri=x2; }; BPHole() {}; ~BPHole(){}; void Print(); // ClassDef(BPHole,1) //root specific // TVector3 *GetPos(){TVector3 *pos=new TVector3(r[0],r[1],r[2]); return pos;}; }; class BDetector : public BHitMap { #define MAXPEAK 10 private: double Pitch; double DetPos; double DetZ; int orient; public: int NumPeak; BPeak *Peak[MAXPEAK]; // double HitPos[MAXPEAK][3]; BDetector(double=480e-4,double=-3.048); ~BDetector(){}; inline void Orientation(int x){orient=x;} inline int Orientation(){return(orient);} void PrintPosition(); double GetPosition(int=0); double GetPositionError(int=0); inline double GetZPos(){return DetZ;} inline double SetZPos(double z){DetZ=z;} void FindPeakss(){FindPeaks(Peak);}; // ClassDef(BDetector,1) }; class BPTrack { private: public: BDetector *det1; BDetector *det2; BPHole *PHole; int Peak1; int Peak2; double DetP1[3]; double DetP2[3]; BPTrack(){}; ~BPTrack(){}; void GetTrack(); void GetError(); void GetDirection(); void Print(); double GetTrackDistance(BPTrack *,double * = NULL); //void GetDistance(BPTrack *); double GetDistancePoint(double *,double * = NULL); // ClassDef(BPTrack,1) // TVector3 *GetPos(){TVector3 *pos=new TVector3(DetP1[0],DetP1[1],DetP1[2]); return pos;}; }; class Ir192 { private: public: Ir192(){}; ~Ir192(){}; double Get(); }; class BPPhoton { private: TRandom rnd; public: float Xsect[3][6][100]; double rho[3]; double step_size; int step_type; double prob; // surviving probability int step_count; int Cmat; double Pprob; // previous probability of surviving bool CComp; // compton scattering included double Cpos[3]; double Cdir[3]; double Cen; double CDen; bool SiHit; int Emi; BPPhoton(){step_count=0; prob=1; Pprob=1;}; ~BPPhoton(){}; void Reset() {CComp=0; prob=1; Cmat=-1; Pprob=1; CDen=0; step_count=0; step_size=0; step_type=0;}; void ReadXSect(int, char *[]); double StepSize(bool=true); double GetXSect(int,int, double); void Print(); void DoStep(bool); inline void SetCPos(double *pos) {for(int i=0;i<3;i++) Cpos[i]=pos[i];} inline void SetCDir(double *dir) {for(int i=0;i<3;i++) Cdir[i]=dir[i];} inline void SetStepSize(double ss) {step_size=ss; step_type=3;} inline void SetRho(double *x){for(int i=0;i<3;i++) rho[i]=x[i];} double GetIntProb(int=0,double=-1); }; #endif