//------------------------------------------------------------------------------ // Main geometry classes -- // (C) Piero Giubilato 2008-2010, Berkeley Lab -- //------------------------------------------------------------------------------ //______________________________________________________________________________ // {Trace} // [File name] "geom_Layer.h" // [Author] "Piero Giubilato" // [Version] "1.0" // [Modified by] "Piero Giubilato" // [Last revision] "11 Feb 2008" // [Language] "C++" // [Compiler] "Visual C++ 9.x" // [Member of] "Cool SEAL" // [Project] "SEAL" // [Description] "Main geometry classes." // [Key documentation] // "Root user's guide" // "Visual C++ Reference Help" // {Trace} //______________________________________________________________________________ // Overloading check #ifndef geom_Layer_H #define geom_Layer_H // Standard libs // Root components #include // Application components #include "data_Object.h" #include "geom_Chip.h" // Support data classes (note how they are all TObject based to allow automatic streaming) // They need to be included into the root_Linkdef.h file togheter with the data_Layer // main class. //______________________________________________________________________________ class geom_Point3D { // A 3D point in space public: Double_t x, y, z; //ClassDef(geom_Point3D, 1); }; //______________________________________________________________________________ class geom_Angle3D { // A 3D angle in space public: Double_t a, b, g; //ClassDef(geom_Angle3D, 1); }; //______________________________________________________________________________ class geom_iPixel { // indexed Pixel (iPixel) for zero-suppressed data public: UInt_t col, row, val; //ClassDef(geom_iPixel, 1) }; //______________________________________________________________________________ class geom_Layer: public data_Object { private: // Class identifiers static const UShort_t class_Ver = 1; // Layer size and pixel count Double_t layer_size_Width; Double_t layer_size_Height; UInt_t layer_col_Count; UInt_t layer_row_Count; // Layer space position/orientation geom_Point3D layer_Pos; geom_Angle3D layer_Rot; // Functions int data_Preset(Double_t x, Double_t y, Double_t z, Double_t a, Double_t b, Double_t g); public: // Default methods geom_Layer (); geom_Layer (Double_t x, Double_t y, Double_t z, Double_t a, Double_t b, Double_t g); ~geom_Layer (); // Root overloaded virtual void Streamer(TBuffer &b); void Dump() const {Dump(0);} void Dump(UInt_t level) const; // Pixel count (mimics the same data_Layer members) UInt_t dp_Count(UInt_t col, UInt_t row); UInt_t dp_col_Count() const; UInt_t dp_col_Count(UInt_t col_Count); UInt_t dp_row_Count() const; UInt_t dp_row_Count(UInt_t row_Count); // Layer Size Double_t size_Width() const; Double_t size_Width(Double_t width); Double_t size_Height() const; Double_t size_Height(Double_t height); // Layer position and rotation Double_t pos_X () const; Double_t pos_X (Double_t x); Double_t pos_Y () const; Double_t pos_Y (Double_t y); Double_t pos_Z () const; Double_t pos_Z (Double_t z); Double_t rot_A () const; Double_t rot_A (Double_t a); Double_t rot_B () const; Double_t rot_B (Double_t b); Double_t rot_G () const; Double_t rot_G (Double_t g); // Make the class visible by RootCint //ClassDef(geom_Layer, 1) }; // Overloading check #endif