Universita' di GenovaINFN Sezione di Genova  
AIRWATCH / EUSO Genova

PmtGeometry

#include "PmtGeometry.hh"

PmtGeometry


class description - source file - inheritance tree (.pdf)

class PmtGeometry : public EsafConfigurable

Inheritance Chart:
EsafConfigurable
<-
PmtGeometry
    private:
static TVector3& Corner(Int_t r, Int_t c) TVector3 LocalCoord(const TVector3&) const Int_t Pad(const TVector3&) const static void SetPmtGeometry() public:
PmtGeometry(TVector3, TVector3, TVector3) PmtGeometry(const PmtGeometry&) virtual ~PmtGeometry() TVector3 Center() const static TClass* Class() virtual const char* ClassName() const virtual const char* ClassType() const static Double_t DeadBorder() static Double_t DeadInnerStrip() Int_t GetChannel(ChannelUniqueId id) const ChannelUniqueId GetLastUniqueId() const OpticalAdaptor* GetOA() const ChannelUniqueId GetStartUniqueId() const ChannelUniqueId GetUniqueId(Int_t ch) const const TVector3& GetX() const const TVector3& GetY() const const TVector3& GetZ() const void InsertOA(OpticalAdaptor* oa) virtual TClass* IsA() const Double_t IsHit(const Photon&) const Bool_t IsInside(const Photon&) const const PmtGeometry* Nearest(OAFace) const const TVector3& Normal() const static Int_t NumPads() PmtGeometry& operator=(const PmtGeometry&) Int_t Pad(const Photon&) const static Double_t PadSide() Double_t PhiFOV(Int_t nch) const Photomultiplier* Pmt() const const TVector3& Position() const TVector3 Position(Int_t, Int_t) const TVector3 Position(Int_t) const static void ResetClass() static Int_t Rows() void SetNearest(PmtGeometry*, PmtGeometry*, PmtGeometry*, PmtGeometry*) void SetOA(OpticalAdaptor* oa) void SetPmt(Photomultiplier* pm) void SetStartUniqueId(ChannelUniqueId start) virtual void ShowMembers(TMemberInspector& insp, char* parent) static Double_t Side() virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b) Double_t ThetaFOV(Int_t nch) const

Data Members

    private:
static Int_t fgNumPads number of active pads static Int_t fgNumRows number of rows and columns static Double_t fgSide physical total width of the pmt static Double_t fgDeadBorder thickness of external dead space static Double_t fgDeadInner thickness of internal space static Double_t fgPadSide width of one pad static TVector3* fgCorners[10][10] map of 3D points with the corner of TVector3 fPosition local coordinate origin position TVector3 fZAxis normal to the phocal surface TVector3 fYAxis y axis in global coordinate TVector3 fXAxis x axis in global coordinate OpticalAdaptor* pOA PmtGeometry* fRight PmtGeometry* fLeft PmtGeometry* fFront PmtGeometry* fBack Photomultiplier* pPmt ChannelUniqueId fStartUniqueId

Class Description

    Photomultiplier Geometry
    ========================

    Geometry descriptor of a PMT this object can be attached to any
    Photomultiplier object In the constructor it retrieves the relevant
    parameters from the Config object and store them in class variables Local
    Coordinates: x,y,z z is normal to the Photocathode (0,0,0) is the upper
    left corner of the pmt photocathode surface up is defined by the y axis
    right is defined by the x axis direction left is -x


PmtGeometry(TVector3 x, TVector3 n, TVector3 m) : EsafConfigurable(), fPosition(x), fZAxis(n.Unit())
 Construtor


~PmtGeometry()
 Destructor


void ResetClass()
 Reset static data members


void SetNearest(PmtGeometry* r, PmtGeometry* l, PmtGeometry* f, PmtGeometry* b)
 Set pointers to nearest neighbors


void InsertOA( OpticalAdaptor* oa )
 Insert oa in front of the pmt and displace geometry of oa->GetHeight()


void SetPmtGeometry()
 Set local geometry infos and global parameters only once


Bool_t IsInside( const Photon& ph ) const
 check whether a Photon is inside the geometrical acceptance of this pmt
 it returns true when the Photon is within the external side and its
 distance from the surface is less than PMT_TOLERANCE

Double_t IsHit( const Photon& ph ) const
 check whether a Photon


TVector3 Center() const
 Return the position of the center of the pmt


TVector3 LocalCoord( const TVector3& pos) const

Int_t Pad( const Photon& ph ) const

Int_t Pad( const TVector3& x) const

const PmtGeometry* Nearest( OAFace side ) const
 Nearest neighbor


TVector3 Position(Int_t r, Int_t c) const
 Return the position in EUSO coordinate of the center of a pad
 r and c are not checked


TVector3 Position(Int_t ch) const
 return the position in EUSO coordinate of the center of a pad
 ch is the channel number defined as ch = r*n+c


Double_t ThetaFOV(Int_t ch) const
 Theta in field of view (FOV) corresponding to the center of this pad


Double_t PhiFOV(Int_t ch) const
 Theta in field of view (FOV) corresponding to the center of this pad


Int_t GetChannel( ChannelUniqueId chid ) const
 Returns channel associated to unique id




Inline Functions


             const char* ClassType() const
             const char* ClassName() const
                   Int_t NumPads()
                   Int_t Rows()
                Double_t Side()
                Double_t PadSide()
                Double_t DeadBorder()
                Double_t DeadInnerStrip()
                    void SetPmt(Photomultiplier* pm)
        Photomultiplier* Pmt() const
                    void SetOA(OpticalAdaptor* oa)
         OpticalAdaptor* GetOA() const
                TVector3 Position(Int_t) const
         const TVector3& Normal() const
         const TVector3& GetX() const
         const TVector3& GetY() const
         const TVector3& GetZ() const
                    void SetStartUniqueId(ChannelUniqueId start)
         ChannelUniqueId GetUniqueId(Int_t ch) const
         ChannelUniqueId GetStartUniqueId() const
         ChannelUniqueId GetLastUniqueId() const
               TVector3& Corner(Int_t r, Int_t c)
                 TClass* Class()
                 TClass* IsA() const
                    void ShowMembers(TMemberInspector& insp, char* parent)
                    void Streamer(TBuffer& b)
                    void StreamerNVirtual(TBuffer& b)
             PmtGeometry PmtGeometry(const PmtGeometry&)
            PmtGeometry& operator=(const PmtGeometry&)
About Us | EUSO Official Website | Web pages created by Roberto Pesce and Alessandro Thea - Last Update Wed Nov 16 16:18:45 2005