Skip to content
Snippets Groups Projects
THcDriftChamberPlane.h 3.76 KiB
Newer Older
  • Learn to ignore specific revisions
  • #ifndef ROOT_THcDriftChamberPlane
    #define ROOT_THcDriftChamberPlane
    
    //////////////////////////////////////////////////////////////////////////////
    
    // THcDriftChamberPlane
    //
    // A Hall C scintillator plane
    //
    // May want to later inherit from a THcPlane class if there are similarities
    // in what a plane is shared with other detector types (shower, etc.)
    
    //////////////////////////////////////////////////////////////////////////////
    
    #include "THaSubDetector.h"
    #include "TClonesArray.h"
    
    class THcDCWire;
    class THcDCHit;
    class THcDCTimeToDistConv;
    
    
    class THcDriftChamberPlane : public THaSubDetector {
    
      THcDriftChamberPlane( const char* name, const char* description,
    			Int_t planenum, THaDetectorBase* parent = NULL);
      virtual ~THcDriftChamberPlane();
    
      virtual void    Clear( Option_t* opt="" );
      virtual Int_t Decode( const THaEvData& );
      virtual EStatus Init( const TDatime& run_time );
    
      virtual Int_t CoarseProcess( TClonesArray& tracks );
      virtual Int_t FineProcess( TClonesArray& tracks );
              Bool_t   IsTracking() { return kFALSE; }
      virtual Bool_t   IsPid()      { return kFALSE; }
    
      virtual Int_t ProcessHits(TClonesArray* rawhits, Int_t nexthit);
    
    
      // Get and Set functions
      Int_t        GetNWires()   const { return fWires->GetLast()+1; }
      THcDCWire*  GetWire(Int_t i) const
      { assert( i>=1 && i<=GetNWires() );
        return (THcDCWire*)fWires->UncheckedAt(i-1); }
    
      Int_t         GetNHits() const { return fHits->GetLast()+1; }
    
      Int_t         GetNRawhits() const {return fNRawhits; }
    
      TClonesArray* GetHits()  const { return fHits; }
    
      Int_t        GetPlaneNum() const { return fPlaneNum; }
      Int_t        GetChamberNum() const { return fChamberNum; }
      void         SetPlaneIndex(Int_t index) { fPlaneIndex = index; }
      Int_t        GetPlaneIndex() { return fPlaneIndex; }
      Double_t     GetXsp() const { return fXsp; }
      Double_t     GetYsp() const { return fYsp; }
    
      Int_t        GetReadoutX() { return fReadoutX; }
      Double_t     GetReadoutCorr() { return fReadoutCorr; }
      Double_t     GetCentralTime() { return fCentralTime; }
      Int_t        GetDriftTimeSign() { return fDriftTimeSign; }
    
      Double_t     GetBeta() { return fBeta; }
      Double_t     GetSigma() { return fSigma; }
      Double_t     GetPsi0() { return fPsi0; }
      Double_t*    GetStubCoef() { return fStubCoef; }
    
      Double_t*    GetPlaneCoef() { return fPlaneCoef; }
    
      THcDriftChamberPlane(); // for ROOT I/O
    
      Double_t     CalcWireFromPos(Double_t pos);
    
      Int_t        GetReadoutLR() const { return fReadoutLR;}
      Int_t        GetReadoutTB() const { return fReadoutTB;}
    
      Int_t        GetVersion() const {return fVersion;}
    
      TClonesArray* fParentHitList;
    
      TClonesArray* fHits;
      TClonesArray* fWires;
    
      Int_t fPlaneIndex;		/* Index of this plane within it's chamber */
      Int_t fChamberNum;
    
      Int_t fNWires;
      Int_t fTdcWinMin;
      Int_t fTdcWinMax;
      Double_t fPitch;
      Double_t fCentralWire;
      Double_t fPlaneTimeZero;
    
      Double_t fXsp;
      Double_t fYsp;
    
      Double_t fSigma;
      Double_t fPsi0;
      Double_t fStubCoef[4];
      Double_t fBeta;
    
      Int_t fReadoutX;
      Double_t fReadoutCorr;
      Double_t fCentralTime;
      Int_t fDriftTimeSign;
    
      Double_t fCenter;
    
      Double_t fNSperChan;		/* TDC bin size */
    
      virtual Int_t  ReadDatabase( const TDatime& date );
      virtual Int_t  DefineVariables( EMode mode = kDefine );
    
    
      THcDCTimeToDistConv* fTTDConv;  // Time-to-distance converter for this plane's wires
    
    
      THcHodoscope* fglHod;		// Hodoscope to get start time
    
    
      ClassDef(THcDriftChamberPlane,0); // A single plane within a THcDriftChamber