00001 00002 // $Id: PlexusABC.h,v 1.20 2005/02/02 11:45:48 tagg Exp $ 00003 // 00004 // PlexusABC 00005 // 00006 // PlexusABC is an Abstract Base Class for the Plexus and PlexHandle classes 00007 // 00008 // Author: R. Hatcher 2000.05.30 00009 // 00011 00012 #ifndef PLEXUSABC_H 00013 #define PLEXUSABC_H 00014 00015 #ifndef PLEXSEIDALTL_H 00016 #include "Plex/PlexSEIdAltL.h" 00017 #endif 00018 #ifndef PLEXPIXELSPOTID_H 00019 #include "Plex/PlexPixelSpotId.h" 00020 #endif 00021 #ifndef PLEXPINDIODEID_H 00022 #include "Plex/PlexPinDiodeId.h" 00023 #endif 00024 #ifndef PLEXLEDID_H 00025 #include "Plex/PlexLedId.h" 00026 #endif 00027 #ifndef RAWCHANNELID_H 00028 #include "RawData/RawChannelId.h" 00029 #endif 00030 #ifndef READOUTTYPE_H 00031 #include "Conventions/ReadoutType.h" 00032 #endif 00033 00034 #ifndef VLDCONTEXT_H 00035 #include "Validity/VldContext.h" 00036 #endif 00037 #ifndef VLDRANGE_H 00038 #include "Validity/VldRange.h" 00039 #endif 00040 00041 #include <vector> 00042 // utility is where "pair" is defined 00043 #include <utility> 00044 00045 class PlexCalib; 00046 00047 class PlexusABC : public TObject { 00048 00049 // the loan pool might need to peek behind the curtain 00050 friend class PlexLoanPool; 00051 00052 public: 00053 00054 // these are the methods that the ABC is meant to define 00055 // and which must be implemented by both the Plexus and PlexHandle 00056 virtual RawChannelId GetRawChannelId(const PlexStripEndId& pseid) const = 0; 00057 virtual RawChannelId GetRawChannelId(const PlexPixelSpotId& psid) const = 0; 00058 virtual RawChannelId GetRawChannelId(const PlexPinDiodeId& diodeid) const = 0; 00059 00060 virtual PlexSEIdAltL GetSEIdAltL(const RawChannelId& rcid, 00061 const PlexCalib* calib=0, 00062 Int_t adc=0, Double_t time=0) const = 0; 00063 virtual PlexStripEndId GetStripEndId(const PlexPixelSpotId& psid) const = 0; 00064 00065 virtual std::vector<PlexPixelSpotId> 00066 GetPixelSpotIdVector(const RawChannelId& rcid, 00067 bool uniquePixels) const = 0; 00068 virtual PlexPixelSpotId GetPixelSpotId(const PlexStripEndId& seid) const = 0; 00069 00070 virtual PlexPinDiodeId GetPinDiodeId(const RawChannelId& rcid) const = 0; 00071 00072 virtual ReadoutType::Readout_t 00073 GetReadoutType(const RawChannelId& rcid) const = 0; 00074 00075 virtual std::vector<PlexStripEndId> 00076 GetStripEndIdVector(const PlexLedId& ledid) const = 0; 00077 virtual std::pair<PlexPinDiodeId,PlexPinDiodeId> 00078 GetPinDiodeIds(const PlexLedId& ledid) const = 0; 00079 virtual PlexLedId GetLedId(const PlexStripEndId& seid) const = 0; 00080 virtual PlexLedId GetLedId(const PlexPinDiodeId& diodeid) const = 0; 00081 00082 virtual const std::vector<PlexStripEndId>& 00083 GetAllStripEnds(StripEnd::StripEnd_t restrictEnd = 00084 StripEnd::kUnknown) const = 0; 00085 00086 virtual const std::vector<PlexPixelSpotId>& GetAllPixelSpots() const = 0; 00087 virtual const std::vector<PlexPixelSpotId>& GetAllPixels() const = 0; 00088 virtual const std::vector<PlexPixelSpotId>& GetAllTubes() const = 0; 00089 00090 virtual const std::vector<RawChannelId>& GetAllRawChannelIds() const = 0; 00091 00092 virtual const VldRange& GetVldRange() const = 0; 00093 00094 public: 00095 00096 // to make Plexii i/o-able we need a public default ctor 00097 PlexusABC() : TObject() {;} 00098 00099 protected: 00100 00101 // because this is an ABC provide no real ctor/dtors 00102 PlexusABC(const VldRange& /*vldps*/) {;} 00103 virtual ~PlexusABC() {;} 00104 00105 private: 00106 00107 ClassDef(PlexusABC,1) // PlexusABC version 1 00108 }; 00109 00110 #endif // PLEXUSABC_H
1.3.9.1