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

PlexusABC.h

Go to the documentation of this file.
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

Generated on Mon Nov 23 05:28:02 2009 for loon by  doxygen 1.3.9.1