#ifndef ROOT_THaMWDCPlane
#define ROOT_THaMWDCPlane
#include "THaSubDetector.h"
#include "TClonesArray.h"
#include "THaVar.h"
#include "THaVarList.h"
#include "TMath.h"
#include <iostream>
using namespace std;
class THaEvData;
class THaVDCWire;
class THaMWDCHit;
class THaVDCTimeToDistConv;
class THaMWDCPlane : public THaSubDetector {
public:
THaMWDCPlane( const char* name="", const char* description="",
THaDetectorBase* parent = NULL );
virtual ~THaMWDCPlane();
virtual Int_t Decode( const THaEvData& );
virtual EStatus Init( const TDatime& date );
enum EPlaneType { kXchamber = 0,
kVchamber = 1,
kUchamber = 2,
kYchamber = 3,
kOchamber = 4 } ;
Int_t GetNWires() const { return fWires->GetEntries(); }
TClonesArray* GetWires() const { return fWires; }
THaVDCWire* GetWire(Int_t i) const { return (THaVDCWire*)fWires->At(i);}
UInt_t GetNHits() const { return (UInt_t) fHits->GetEntries(); }
TClonesArray* GetHits() const { return fHits; }
THaMWDCHit* GetHit(Int_t i) const
{ return (THaMWDCHit*)fHits->At(i); }
Int_t GetNWiresHit() const { return fNWiresHit; }
Int_t GetNRefCh() const { return fRefCh->GetEntries(); }
TClonesArray* GetRefCh() const { return fRefCh; }
THaVDCWire* GetRefCh(Int_t i) const
{ return (THaVDCWire*)fRefCh->At(i);}
Int_t GetNRefHits() const { return fRefHits->GetEntries(); }
TClonesArray* GetRefHits() const { return fRefHits; }
THaMWDCHit* GetRefHit(Int_t i) const
{ return (THaMWDCHit*)fRefHits->At(i); }
Int_t GetNRefHit() const { return fNRefHits; }
Double_t GetZ() const { return fZ; }
Double_t GetXWidth() const { return fXWidth; }
Double_t GetYWidth() const { return fYWidth; }
Double_t GetWBeg() const { return fWBeg; }
Double_t GetWSpac() const { return fWSpac; }
Double_t GetCellHeight() const { return fCellHeight; }
Double_t GetWAngle() const { return fWAngle; }
Double_t GetTDCRes() const { return fTDCRes; }
Double_t GetPosRes() const { return fPosRes; }
Double_t GetDriftVel() const { return fDriftVel; }
Double_t GetActAreaMaxX() const { return fXMax ; }
Double_t GetActAreaMaxY() const { return fYMax ; }
Double_t GetActAreaMinX() const { return fXMin ; }
Double_t GetActAreaMinY() const { return fYMin ; }
Double_t GetActAreaMaxTH() const { return fTHMax ; }
Double_t GetActAreaMaxPH() const { return fPHMax ; }
Double_t GetActAreaMinTH() const { return fTHMin ; }
Double_t GetActAreaMinPH() const { return fPHMin ; }
Double_t GetXCorr() const {return fXCorr; }
Double_t GetYCorr() const {return fYCorr; }
Double_t GetThetaCorr() const {return fThetaCorr; }
Double_t GetPhiCorr() const {return fPhiCorr; }
Bool_t IsInReconstruction() const {return fUseInReconstruct;}
EPlaneType GetPlaneType() const { return fPlaneType ; }
Bool_t IsXPlane() const { return (fPlaneType==kXchamber); }
Bool_t IsUPlane() const { return (fPlaneType==kUchamber); }
Bool_t IsVPlane() const { return (fPlaneType==kVchamber); }
Bool_t IsYPlane() const { return (fPlaneType==kYchamber); }
Int_t AreRefChOkay() const { return ( fRefOkay ? -1 : 0 ); }
void SetZ(Double_t z) { fZ = z; }
void SetXWidth() { fXWidth=fXMax-fXMin; }
void SetYWidth() { fYWidth=fYMax-fYMin; }
void SetWBeg(Double_t b) { fWBeg = b; }
void SetWSpac(Double_t s) { fWSpac = s; }
void SetWAngle(Double_t a);
void SetWAngleDeg(Double_t a);
void SetTDCRes(Double_t r) { fTDCRes = r; }
void SetPosRes(Double_t r) { fPosRes = r; }
void SetDriftVel(Double_t v) { fDriftVel = v; }
void SetActAreaMaxX(Double_t x) { fXMax = x; }
void SetActAreaMaxY(Double_t y) { fYMax = y; }
void SetActAreaMinX(Double_t x) { fXMin = x; }
void SetActAreaMinY(Double_t y) { fYMin = y; }
void SetActAreaMaxTH(Double_t t) { fTHMax = t; }
void SetActAreaMaxPH(Double_t p) { fPHMax = p; }
void SetActAreaMinTH(Double_t t) { fTHMin = t; }
void SetActAreaMinPH(Double_t p) { fPHMin = p; }
void SetXCorr( Double_t x ) { fXCorr = x; }
void SetYCorr( Double_t y ) { fYCorr = y; }
void SetThetaDegCorr( Double_t theta ) { fThetaCorr = ( TMath::Pi() * theta )/180.0; }
void SetPhiDegCorr( Double_t phi ) { fPhiCorr = (TMath::Pi()*phi )/180.0; }
void SetInReconstruct( Bool_t i ) { fUseInReconstruct = i; }
void SetHits( TClonesArray *hits ) { fHits = hits; }
THaVDCTimeToDistConv* GetTTDConv() { return fTTDConv; }
Double_t ConvertDriftTimeToDistance( Double_t, Double_t = 0.0 );
Double_t XYtoPlaneCoord( Double_t x, Double_t y);
Double_t GetXYCorr();
void LoadMCHitAt( Double_t x, Double_t y, Double_t xp, Double_t yp );
void PrintDriftCuts();
protected:
Int_t GetParameter( FILE* file, const TString tag, Double_t* value );
Int_t GetOptionalParameter( FILE* file, const TString tag, Double_t* value );
Int_t GetParameter( FILE* file, const TString tag, char* string );
TClonesArray* fWires;
TClonesArray* fHits;
Int_t fNWiresHit;
Int_t fNWires;
THaVar *fEventType;
THaVar *fBit3;
TClonesArray* fRefCh;
TClonesArray* fRefHits;
Int_t fNRefHits;
Int_t fNRefCh;
Bool_t fRefOkay;
Double_t fMinTime, fMaxTime;
Int_t fFlags;
Double_t fZ;
Double_t fXWidth;
Double_t fYWidth;
Double_t fPosRes;
Double_t fXMax, fXMin, fYMax, fYMin ;
Double_t fTHMax, fTHMin, fPHMax, fPHMin ;
Double_t fWBeg;
Double_t fWSpac;
Double_t fCellHeight;
Double_t fWAngle;
EPlaneType fPlaneType;
Double_t fTDCRes;
Double_t fDriftVel;
Double_t fDriftC1;
Double_t fDriftC2;
Double_t fDriftC3;
Double_t fXCorr;
Double_t fYCorr;
Double_t fThetaCorr;
Double_t fPhiCorr;
Bool_t fUseInReconstruct;
THaVDCTimeToDistConv* fTTDConv;
THaDetectorBase* fMWDC;
Int_t fTotalHits;
Int_t fRejectedHits;
virtual void Clear( Option_t* opt="" );
virtual Int_t ReadDatabase( const TDatime& date );
virtual Int_t DefineVariables( EMode mode = kDefine );
Double_t* fRawT;
Double_t* fCorT;
Int_t* fTcounter;
Double_t* fRefT;
ClassDef(THaMWDCPlane,0)
};
#endif
Last update: Tue Jul 7 19:26:17 2009
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.