From 7a973e7b458ac053c54b1d2e2f409ff41162cd5d Mon Sep 17 00:00:00 2001 From: "Stephen A. Wood" <saw@jlab.org> Date: Wed, 11 Apr 2012 15:57:54 -0400 Subject: [PATCH] Code that assumes that hit list stuff is in THaDetectorBase. Going to back out of this and go to multiple inheritance. --- podd | 2 +- src/THcHodoscope.cxx | 70 +++------------------------------ src/THcHodoscope.h | 18 ++++----- src/THcNonTrackingDetector.cxx | 16 ++++---- src/THcNonTrackingDetector.h | 18 ++++----- src/THcSpectrometerDetector.cxx | 24 +++++------ src/THcSpectrometerDetector.h | 18 ++++----- 7 files changed, 54 insertions(+), 112 deletions(-) diff --git a/podd b/podd index 3f08eae..0397e92 160000 --- a/podd +++ b/podd @@ -1 +1 @@ -Subproject commit 3f08eaebe0d0997888a9bf34ba90a211dd608a2d +Subproject commit 0397e92a6812595dcb4ff6a13ec665987e26ca1d diff --git a/src/THcHodoscope.cxx b/src/THcHodoscope.cxx index 3f10290..ad352c6 100644 --- a/src/THcHodoscope.cxx +++ b/src/THcHodoscope.cxx @@ -28,7 +28,7 @@ using namespace std; //_____________________________________________________________________________ THcHodoscope::THcHodoscope( const char* name, const char* description, THaApparatus* apparatus ) : - THaNonTrackingDetector(name,description,apparatus) + THcNonTrackingDetector(name,description,apparatus) { // Constructor fTWalkPar = 0; @@ -38,7 +38,7 @@ THcHodoscope::THcHodoscope( const char* name, const char* description, //_____________________________________________________________________________ THcHodoscope::THcHodoscope( ) : - THaNonTrackingDetector() + THcNonTrackingDetector() { // Constructor fTWalkPar = NULL; @@ -55,7 +55,7 @@ THaAnalysisObject::EStatus THcHodoscope::Init( const TDatime& date ) { // Extra initialization for scintillators: set up DataDest map - if( THaNonTrackingDetector::Init( date ) ) + if( THcNonTrackingDetector::Init( date ) ) return fStatus; const DataDest tmp[NDEST] = { @@ -477,69 +477,11 @@ void THcHodoscope::ClearEvent() //_____________________________________________________________________________ Int_t THcHodoscope::Decode( const THaEvData& evdata ) { - // Decode scintillator data, correct TDC times and ADC amplitudes, and copy - // the data to the local data members. - // This implementation makes the following assumptions about the detector map: - // - The first half of the map entries corresponds to ADCs, - // the second half, to TDCs. - // - The first fNelem detector channels correspond to the PMTs on the - // right hand side, the next fNelem channels, to the left hand side. - // (Thus channel numbering for each module must be consecutive.) - ClearEvent(); + // Get the hitlist (fRawHitList) for this event + Int_t nhits = THcDetectorBase::Decode(evdata); - // Loop over all modules defined for Scintillator 1 detector - - for( Int_t i = 0; i < fDetMap->GetSize(); i++ ) { - THaDetMap::Module* d = fDetMap->GetModule( i ); - bool adc = ( d->model ? fDetMap->IsADC(d) : (i < fDetMap->GetSize()/2) ); - - // Loop over all channels that have a hit. - for( Int_t j = 0; j < evdata.GetNumChan( d->crate, d->slot ); j++) { - - Int_t chan = evdata.GetNextChan( d->crate, d->slot, j ); - if( chan < d->lo || chan > d->hi ) continue; // Not one of my channels - - // Get the data. Scintillators are assumed to have only single hit (hit=0) - Int_t data = evdata.GetData( d->crate, d->slot, chan, 0 ); - - // Get the detector channel number, starting at 0 - Int_t k = d->first + chan - d->lo - 1; - -#ifdef WITH_DEBUG - if( k<0 || k>NDEST*fNelem ) { - // Indicates bad database - Warning( Here("Decode()"), "Illegal detector channel: %d", k ); - continue; - } -// cout << "adc,j,k = " <<adc<<","<<j<< ","<<k<< endl; -#endif - // Copy the data to the local variables. - DataDest* dest = fDataDest + k/fNelem; - k = k % fNelem; - if( adc ) { - dest->adc[k] = static_cast<Double_t>( data ); - dest->adc_p[k] = data - dest->ped[k]; - dest->adc_c[k] = dest->adc_p[k] * dest->gain[k]; - (*dest->nahit)++; - } else { - dest->tdc[k] = static_cast<Double_t>( data ); - dest->tdc_c[k] = (data - dest->offset[k])*fTdc2T; - (*dest->nthit)++; - } - } - } - if ( fDebug > 3 ) { - printf("\n\nEvent %d Trigger %d Scintillator %s\n:", - evdata.GetEvNum(), evdata.GetEvType(), GetPrefix() ); - printf(" paddle Left(TDC ADC ADC_p) Right(TDC ADC ADC_p)\n"); - for ( int i=0; i<fNelem; i++ ) { - printf(" %2d %5.0f %5.0f %5.0f %5.0f %5.0f %5.0f\n", - i+1,fLT[i],fLA[i],fLA_p[i],fRT[i],fRA[i],fRA_p[i]); - } - } - - return fLTNhit+fRTNhit; + return nhits; } //_____________________________________________________________________________ diff --git a/src/THcHodoscope.h b/src/THcHodoscope.h index a093103..5f23006 100644 --- a/src/THcHodoscope.h +++ b/src/THcHodoscope.h @@ -1,23 +1,23 @@ -#ifndef ROOT_THaHodoscope -#define ROOT_THaHodoscope +#ifndef ROOT_THcHodoscope +#define ROOT_THcHodoscope /////////////////////////////////////////////////////////////////////////////// // // -// THaHodoscope // +// THcHodoscope // // // /////////////////////////////////////////////////////////////////////////////// #include "TClonesArray.h" -#include "THaNonTrackingDetector.h" +#include "THcNonTrackingDetector.h" class THaScCalib; -class THaHodoscope : public THaNonTrackingDetector { +class THcHodoscope : public THcNonTrackingDetector { public: - THaHodoscope( const char* name, const char* description = "", + THcHodoscope( const char* name, const char* description = "", THaApparatus* a = NULL ); - virtual ~THaHodoscope(); + virtual ~THcHodoscope(); virtual Int_t Decode( const THaEvData& ); virtual EStatus Init( const TDatime& run_time ); @@ -38,7 +38,7 @@ public: friend class THaScCalib; - THaHodoscope(); // for ROOT I/O + THcHodoscope(); // for ROOT I/O protected: // Calibration @@ -119,7 +119,7 @@ protected: virtual Double_t TimeWalkCorrection(const Int_t& paddle, const ESide side); - ClassDef(THaHodoscope,0) // Generic scintillator class + ClassDef(THcHodoscope,0) // Generic hodoscope class }; //////////////////////////////////////////////////////////////////////////////// diff --git a/src/THcNonTrackingDetector.cxx b/src/THcNonTrackingDetector.cxx index 2f76e1f..dd0cc66 100644 --- a/src/THcNonTrackingDetector.cxx +++ b/src/THcNonTrackingDetector.cxx @@ -2,34 +2,34 @@ ////////////////////////////////////////////////////////////////////////// // -// THaNonTrackingDetector +// THcNonTrackingDetector // ////////////////////////////////////////////////////////////////////////// -#include "THaNonTrackingDetector.h" +#include "THcNonTrackingDetector.h" -ClassImp(THaNonTrackingDetector) +ClassImp(THcNonTrackingDetector) //______________________________________________________________________________ -THaNonTrackingDetector::THaNonTrackingDetector( const char* name, +THcNonTrackingDetector::THcNonTrackingDetector( const char* name, const char* description, THaApparatus* apparatus ) - : THaSpectrometerDetector(name,description,apparatus) + : THcSpectrometerDetector(name,description,apparatus) { // Normal constructor with name and description } //______________________________________________________________________________ -THaNonTrackingDetector::THaNonTrackingDetector( ) - : THaSpectrometerDetector( ) +THcNonTrackingDetector::THcNonTrackingDetector( ) + : THcSpectrometerDetector( ) { // for ROOT I/O only } //______________________________________________________________________________ -THaNonTrackingDetector::~THaNonTrackingDetector() +THcNonTrackingDetector::~THcNonTrackingDetector() { // Destructor diff --git a/src/THcNonTrackingDetector.h b/src/THcNonTrackingDetector.h index a0ff050..25b129d 100644 --- a/src/THcNonTrackingDetector.h +++ b/src/THcNonTrackingDetector.h @@ -1,9 +1,9 @@ -#ifndef ROOT_THaNonTrackingDetector -#define ROOT_THaNonTrackingDetector +#ifndef ROOT_THcNonTrackingDetector +#define ROOT_THcNonTrackingDetector ////////////////////////////////////////////////////////////////////////// // -// THaNonTrackingDetector.h +// THcNonTrackingDetector.h // // Abstract base class for a generic non-tracking spectrometer detector. // @@ -12,16 +12,16 @@ // ////////////////////////////////////////////////////////////////////////// -#include "THaSpectrometerDetector.h" +#include "THcSpectrometerDetector.h" class TClonesArray; -class THaNonTrackingDetector : public THaSpectrometerDetector { +class THcNonTrackingDetector : public THcSpectrometerDetector { public: - THaNonTrackingDetector(); // only for ROOT I/O + THcNonTrackingDetector(); // only for ROOT I/O - virtual ~THaNonTrackingDetector(); + virtual ~THcNonTrackingDetector(); virtual Int_t CoarseProcess( TClonesArray& tracks ) = 0; virtual Int_t FineProcess( TClonesArray& tracks ) = 0; @@ -32,10 +32,10 @@ protected: //Only derived classes may construct me for real - THaNonTrackingDetector( const char* name, const char* description, + THcNonTrackingDetector( const char* name, const char* description, THaApparatus* a = NULL); - ClassDef(THaNonTrackingDetector,1) //ABC for a non-tracking spectrometer detector + ClassDef(THcNonTrackingDetector,0) //ABC for a non-tracking spectrometer detector }; #endif diff --git a/src/THcSpectrometerDetector.cxx b/src/THcSpectrometerDetector.cxx index 9b33f48..c21122a 100644 --- a/src/THcSpectrometerDetector.cxx +++ b/src/THcSpectrometerDetector.cxx @@ -2,41 +2,41 @@ ////////////////////////////////////////////////////////////////////////// // -// THaSpectrometerDetector +// THcSpectrometerDetector // ////////////////////////////////////////////////////////////////////////// -#include "THaSpectrometerDetector.h" +#include "THcSpectrometerDetector.h" #include "THaTrack.h" #include "TMath.h" -ClassImp(THaSpectrometerDetector) +ClassImp(THcSpectrometerDetector) //______________________________________________________________________________ -THaSpectrometerDetector::THaSpectrometerDetector( const char* name, +THcSpectrometerDetector::THcSpectrometerDetector( const char* name, const char* description, THaApparatus* apparatus ) - : THaDetector(name,description,apparatus) + : THcDetector(name,description,apparatus) { // Constructor } //______________________________________________________________________________ -THaSpectrometerDetector::THaSpectrometerDetector( ) +THcSpectrometerDetector::THcSpectrometerDetector( ) { // Constructor for ROOT I/O only } //______________________________________________________________________________ -THaSpectrometerDetector::~THaSpectrometerDetector() +THcSpectrometerDetector::~THcSpectrometerDetector() { // Destructor } //_____________________________________________________________________________ -void THaSpectrometerDetector::DefineAxes(Double_t rotation_angle) +void THcSpectrometerDetector::DefineAxes(Double_t rotation_angle) { // define variables used for calculating intercepts of tracks // with the detector @@ -50,7 +50,7 @@ void THaSpectrometerDetector::DefineAxes(Double_t rotation_angle) } //_____________________________________________________________________________ -bool THaSpectrometerDetector::CalcTrackIntercept(THaTrack* theTrack, +bool THcSpectrometerDetector::CalcTrackIntercept(THaTrack* theTrack, Double_t& t, Double_t& xcross, Double_t& ycross) { @@ -75,21 +75,21 @@ bool THaSpectrometerDetector::CalcTrackIntercept(THaTrack* theTrack, } //_____________________________________________________________________________ -bool THaSpectrometerDetector::CheckIntercept(THaTrack *track) +bool THcSpectrometerDetector::CheckIntercept(THaTrack *track) { Double_t x, y, t; return CalcTrackIntercept(track, t, x, y); } //_____________________________________________________________________________ -bool THaSpectrometerDetector::CalcInterceptCoords(THaTrack* track, Double_t& x, Double_t& y) +bool THcSpectrometerDetector::CalcInterceptCoords(THaTrack* track, Double_t& x, Double_t& y) { Double_t t; return CalcTrackIntercept(track, t, x, y); } //_____________________________________________________________________________ -bool THaSpectrometerDetector::CalcPathLen(THaTrack* track, Double_t& t) +bool THcSpectrometerDetector::CalcPathLen(THaTrack* track, Double_t& t) { Double_t x, y; return CalcTrackIntercept(track, t, x, y); diff --git a/src/THcSpectrometerDetector.h b/src/THcSpectrometerDetector.h index e9f1fae..ac909dd 100644 --- a/src/THcSpectrometerDetector.h +++ b/src/THcSpectrometerDetector.h @@ -1,9 +1,9 @@ -#ifndef ROOT_THaSpectrometerDetector -#define ROOT_THaSpectrometerDetector +#ifndef ROOT_THcSpectrometerDetector +#define ROOT_THcSpectrometerDetector ////////////////////////////////////////////////////////////////////////// // -// THaSpectrometerDetector +// THcSpectrometerDetector // // Abstract base class for a generic spectrometer detector. // @@ -12,14 +12,14 @@ // ////////////////////////////////////////////////////////////////////////// -#include "THaDetector.h" +#include "THcDetector.h" class THaTrack; -class THaSpectrometerDetector : public THaDetector { +class THcSpectrometerDetector : public THcDetector { public: - virtual ~THaSpectrometerDetector(); + virtual ~THcSpectrometerDetector(); virtual Bool_t IsTracking() = 0; virtual Bool_t IsPid() = 0; @@ -29,7 +29,7 @@ public: Double_t& x, Double_t& y ); bool CalcPathLen( THaTrack* track, Double_t& t ); - THaSpectrometerDetector(); // for ROOT I/O only + THcSpectrometerDetector(); // for ROOT I/O only protected: @@ -44,10 +44,10 @@ protected: Double_t& ycross, Double_t& xcross); //Only derived classes may construct me - THaSpectrometerDetector( const char* name, const char* description, + THcSpectrometerDetector( const char* name, const char* description, THaApparatus* a = NULL ); - ClassDef(THaSpectrometerDetector,1) //ABC for a spectrometer detector + ClassDef(THcSpectrometerDetector,0) //ABC for a spectrometer detector }; #endif -- GitLab