Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

HardwareComponent.h

Go to the documentation of this file.
00001 #ifndef HARDWARECOMPONENT_H
00002 #define HARDWARECOMPONENT_H
00003 #include "Plex/PlexHandle.h"
00004 #include "HardwareType.h"
00005 
00006 class HardwareComponent 
00007 {
00008  private:
00009   HardwareType::Hardware_t     fType;
00010   Int_t                        fId;
00011 
00012  public:
00013   HardwareComponent(HardwareType::Hardware_t type=HardwareType::kUnknown, 
00014                     Int_t id=0) 
00015     : fType(type), fId(id) {};  
00016   ~HardwareComponent() {};
00017 
00018   // Copy operator.
00019   void operator=(const HardwareComponent& other) { fType = other.fType; fId = other.fId; };
00020 
00021   // Ctors for various types
00022   HardwareComponent(HardwareType::Hardware_t type, RawChannelId rcid);
00023   HardwareComponent(HardwareType::Hardware_t type, PlexPixelSpotId psid);
00024   HardwareComponent(HardwareType::Hardware_t type, PlexStripEndId seid);
00025   HardwareComponent(HardwareType::Hardware_t type, PlexPinDiodeId pdid);
00026   HardwareComponent(HardwareType::Hardware_t type, PlexPlaneId    plane);
00027 
00028   //HardwareComponent(const char* s); // from string  
00029 
00030   // Set functions:
00031   Bool_t      FromString(const char* string);
00032   void        SetType(HardwareType::Hardware_t type) { fType = type; };
00033   void        SetId(Int_t id)                        { fId = id; };
00034 
00035   // Get functions:
00036   HardwareType::Hardware_t   GetType() const { return fType; };
00037   Int_t                      GetId() const { return fId; };
00038   RawChannelId               GetRawChannelId() const { return RawChannelId(fId); };
00039   PlexPixelSpotId            GetPixelSpotId() const { return PlexPixelSpotId(fId); };
00040   PlexStripEndId             GetStripEndId() const { return PlexStripEndId(fId); };
00041   PlexPinDiodeId             GetPinDiodeId() const { return PlexPinDiodeId(fId); };
00042   PlexPlaneId                GetPlaneId() const { return PlexPlaneId(fId); };
00043   
00044   const std::vector<PlexStripEndId>& GetStripEnds(PlexHandle plex);
00045 
00046   void        Print(Option_t* option="") const;
00047   const char* AsString(Option_t* option="") const;
00048 
00049   // Comparisons
00050   friend Bool_t operator< (const HardwareComponent &lhs, const HardwareComponent &rhs);
00051   friend Bool_t operator<=(const HardwareComponent &lhs, const HardwareComponent &rhs);
00052   friend Bool_t operator==(const HardwareComponent &lhs, const HardwareComponent &rhs);
00053   friend Bool_t operator!=(const HardwareComponent &lhs, const HardwareComponent &rhs);
00054   friend Bool_t operator> (const HardwareComponent &lhs, const HardwareComponent &rhs);
00055   friend Bool_t operator>=(const HardwareComponent &lhs, const HardwareComponent &rhs);
00056 
00057 
00058  private:
00059   static std::vector<PlexStripEndId> fEndList; // ! Temporary storage for GetStripEnds calls.
00060 
00061   void GetStripEndsForPixelSpot(PlexPixelSpotId psid, PlexHandle plex);
00062   void GetStripEndsForPixel(PlexPixelSpotId psid, PlexHandle plex);
00063   void GetStripEndsForPmt(PlexPixelSpotId psid, PlexHandle plex);
00064 
00065   void GetStripEndsForChannel(RawChannelId rcid, PlexHandle plex);
00066   void GetStripEndsForMinder(RawChannelId rcid, PlexHandle plex);
00067   void GetStripEndsForMaster(RawChannelId rcid, PlexHandle plex);
00068   void GetStripEndsForVaChip(RawChannelId rcid, PlexHandle plex);
00069   void GetStripEndsForVfb(RawChannelId rcid, PlexHandle plex);
00070   void GetStripEndsForVmm(RawChannelId rcid, PlexHandle plex);
00071   void GetStripEndsForVarc(RawChannelId rcid, PlexHandle plex);
00072   void GetStripEndsForCrate(RawChannelId rcid, PlexHandle plex);
00073 
00074   void GetStripEndsForPlane(PlexPlaneId plane, PlexHandle plex);
00075   void GetStripEndsForVetoShield(PlexHandle plex);
00076   void GetStripEndsForSupermodule(Int_t sm, PlexHandle plex);
00077   void GetStripEndsForSpectrometer(PlexHandle plex);
00078   void GetStripEndsForCalorimeter(PlexHandle plex);
00079   void GetStripEndsForDetector(PlexHandle plex);
00080 
00081 };
00082 
00083 
00084 // Comparison operators:
00085 
00086 inline Bool_t operator< (const HardwareComponent &lhs, const HardwareComponent &rhs)
00087 { 
00088   if( lhs.fType==rhs.fType ) return (lhs.fId  < rhs.fId);
00089   else                       return (lhs.fType< rhs.fType);
00090 }
00091 inline Bool_t operator<=(const HardwareComponent &lhs, const HardwareComponent &rhs)
00092 { 
00093   if( lhs.fType==rhs.fType ) return (lhs.fId  <= rhs.fId);
00094   else                       return (lhs.fType<= rhs.fType);
00095 }
00096 inline Bool_t operator==(const HardwareComponent &lhs, const HardwareComponent &rhs)
00097 { 
00098   if( lhs.fType==rhs.fType ) return (lhs.fId  == rhs.fId);
00099   return false;
00100 }
00101 inline Bool_t operator!=(const HardwareComponent &lhs, const HardwareComponent &rhs)
00102 { 
00103   if(lhs.fId   != rhs.fId) return true;
00104   if( lhs.fType!=rhs.fType ) return true;
00105   return false;
00106 }
00107 inline Bool_t operator> (const HardwareComponent &lhs, const HardwareComponent &rhs)
00108 { 
00109   if( lhs.fType==rhs.fType ) return (lhs.fId  > rhs.fId);
00110   else                       return (lhs.fType> rhs.fType);
00111 }
00112 inline Bool_t operator>=(const HardwareComponent &lhs, const HardwareComponent &rhs)
00113 { 
00114   if( lhs.fType==rhs.fType ) return (lhs.fId  >= rhs.fId);
00115   else                       return (lhs.fType>= rhs.fType);
00116 }
00117 
00118 
00119 #endif

Generated on Mon Feb 15 11:06:47 2010 for loon by  doxygen 1.3.9.1