#ifndef ROOT_THaScintPlaneDet
#define ROOT_THaScintPlaneDet
#include "THaNonTrackingDetector.h"
#include "THaNonTrackingDetector.h"
#include "THaApparatus.h"
#include "TClonesArray.h"
class THaScintPMT;
class THaScintHit;
class THaScintBar;
class THaAdcHit;
class THaTdcHit;
class THaNonTrackingDetector;
class THaPartialHit;
class THaTrackProj;
#ifdef DEBUG_LEVEL
#undef DEBUG_LEVEL
#endif
#define DEBUG_LEVEL 2
#include "DebugDef.h"
#define BUILD_PARTIAL_HIT 0
#define SAVEFLAT 1
#define CUT_ON_YPOS 1
class THaScintPlaneDet : public THaNonTrackingDetector {
public:
THaScintPlaneDet( const char* name, const char* description,
THaApparatus* apparatus=0);
THaScintPlaneDet( );
virtual ~THaScintPlaneDet();
virtual Int_t InitOutput( THaOutput* output );
virtual Int_t Decode( const THaEvData& );
virtual Int_t CoarseProcess( TClonesArray& tracks );
virtual Int_t FineProcess( TClonesArray& tracks );
char* ReadNumberSignStartComment( FILE* fp, char *buf, const int len );
Int_t BuildAllBars( TClonesArray& trks );
Int_t BuildCompleteBars( TClonesArray& trks );
Int_t GetNBars() const { return fBars->GetLast()+1; }
Int_t GetNHits() const { return fHits->GetLast()+1; }
Int_t GetNRefHits() const { return fRefHits->GetLast()+1;}
Int_t GetNLtHits() const { return fLtHits->GetLast()+1; }
Int_t GetNRtHits() const { return fRtHits->GetLast()+1; }
Int_t GetNLaHits() const { return fLaHits->GetLast()+1; }
Int_t GetNRaHits() const { return fRaHits->GetLast()+1; }
Int_t GetNPartHits() const { return fPartHits->GetLast()+1;}
TClonesArray* GetBars() const {return fBars;}
THaScintBar* GetBar(Int_t i) const
{return (THaScintBar*)fBars->At(i);}
TClonesArray* GetHits() const {return fHits;}
THaScintHit* GetHit(Int_t i) const
{return (THaScintHit*)fHits->At(i);}
TClonesArray* GetRefHits() const {return fRefHits;}
const THaTdcHit* GetRefHit(Int_t i) const
{return (THaTdcHit*)fRefHits->At(i);}
TClonesArray* GetLtHits() const {return fLtHits;}
const THaTdcHit* GetLtHit(Int_t i) const
{return (THaTdcHit*)fLtHits->At(i);}
TClonesArray* GetRtHits() const {return fRtHits;}
const THaTdcHit* GetRtHit(Int_t i) const
{return (THaTdcHit*)fRtHits->At(i);}
TClonesArray* GetLaHits() const {return fLaHits;}
const THaAdcHit* GetLaHit(Int_t i) const
{return (THaAdcHit*)fLaHits->At(i);}
TClonesArray* GetRaHits() const {return fRaHits;}
const THaAdcHit* GetRaHit(Int_t i) const
{return (THaAdcHit*)fRaHits->At(i);}
const THaTdcHit* GetBarHitT(const char side, const THaScintBar *const ptr,
const int n=0) const;
const THaAdcHit* GetBarHitA(const char side, const THaScintBar *const ptr,
const int n=0) const;
Int_t GetNRefCh() const { return fRefCh->GetLast()+1; }
TClonesArray* GetRefCh() const { return fRefCh; }
const THaScintPMT* GetRefCh(Int_t i) const
{ return (THaScintPMT*)fRefCh->At(i);}
Int_t AreRefChOkay() const { return ( fRefOkay ? 1 : 0 ); }
TClonesArray* GetPartHits() const {return fPartHits;}
const THaPartialHit* GetPartHit(Int_t i) const
{return (THaPartialHit*)fPartHits->At(i);}
Double_t GetMatchRatioTrack() const {return fMatchRatioTrack;}
virtual Int_t FineMatchingHits(TClonesArray& tracks);
Double_t GetMaxADCHitBar() const {return fMaxADCHitBar;}
Double_t GetMaxEnergyHitBar() const {return fMaxEnergyHitBar;}
Double_t GetMaxADCHit() const {return fMaxADCHit;}
Double_t GetMaxEnergyHit() const {return fMaxEnergyHit;}
Int_t GetNTracks() const { return fTrackProj->GetLast()+1; }
const TClonesArray* GetTrackHits() const { return fTrackProj; }
protected:
Bool_t fCoarseProcessed;
Bool_t fFineProcessed;
Int_t GetParameter( FILE* file, const TString tag, Double_t* value );
Int_t GetTable( FILE* file, const TString tag, Double_t* value,
const Int_t maxval, int* first, int* last );
TClonesArray* fBars;
Int_t fNBars;
TClonesArray* fHits;
TClonesArray* fRefHits;
TClonesArray* fLaHits;
TClonesArray* fRaHits;
TClonesArray* fLtHits;
TClonesArray* fRtHits;
TClonesArray* fPartHits;
TClonesArray* fRefCh;
Int_t fNRefHits;
Bool_t fRefOkay;
Int_t fLTNhit;
Int_t fRTNhit;
Int_t fLANhit;
Int_t fRANhit;
Int_t fNPaddlesHit;
Int_t *fLtIndex;
Int_t *fRtIndex;
Int_t *fLaIndex;
Int_t *fRaIndex;
Double_t* fLE;
Double_t* fRE;
Double_t* fLrawA;
Double_t* fRrawA;
Double_t* fLpedcA;
Double_t* fRpedcA;
Double_t fMaxADCHitBar;
Double_t fMaxEnergyHitBar;
Double_t fMaxADCHit;
Double_t fMaxEnergyHit;
Double_t* fLT;
Double_t* fRT;
Int_t* fLTcounter;
Int_t* fRTcounter;
Int_t* hitcounter;
Double_t* Energy;
Double_t* TDIFF;
Double_t* TOF;
Double_t* T_tot;
Double_t* Yt_pos;
Double_t* Ya_pos;
Double_t* Y_pred;
Double_t* Y_dev;
Double_t* fAngle;
Double_t fTrackAcceptanceDx;
Double_t fTrackAcceptanceDy;
Double_t fMatchRatioTrack;
TClonesArray* fTrackProj;
Int_t fEventCount;
Int_t fErrorReferenceChCount;
Double_t fErrorReferenceChRateWarningThreshold;
Bool_t fTooManyErrRefCh;
void ClearEvent();
void DeleteArrays();
virtual Int_t ReadDatabase( const TDatime& date );
virtual Int_t DefineVariables( EMode mode = kDefine );
virtual Double_t TimeWalkCorrection(
THaScintPMT* pmt,
Double_t ADC,
Double_t time);
enum ESide { kLeft = 0, kRight = 1 };
THaScintPlaneDet& operator=( const THaScintPlaneDet& ) {return *this; }
public:
ClassDef(THaScintPlaneDet,4)
};
#endif
Last update: Tue Jul 7 19:26:18 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.