17 #include "THaDetMap.h"
22 #include "THaGlobals.h"
23 #include "THaApparatus.h"
40 THaApparatus* apparatus ) :
41 THaBeamDet(name,description,apparatus)
58 for (
Int_t nt=0;nt<4;nt++) {
90 for(
Int_t i=0;i<4;i++){
100 THaBeamDet(
"THcRaster")
126 char EngineDID[] =
"xRASTER";
127 EngineDID[0] = toupper(GetApparatus()->
GetName()[0]);
132 static const char*
const here =
"Init()";
133 Error( Here(here),
"Error filling detectormap for %s.", EngineDID);
138 InitHitList(fDetMap,
"THcRasterRawHit",fDetMap->GetTotNumChan()+1);
141 if( (status = THaBeamDet::Init( date )) )
142 return fStatus=status;
144 return fStatus = kOK;
179 {
"pbeam",&
fgpbeam, kDouble,0,1},
243 cout <<
" THcRaster is using EPICS bpm for beam position" << endl;
249 cout <<
" THcRaster is using parameters for beam position" <<
" x = " <<
fgbeam_xoff<<
" y = " <<
fgbeam_yoff<< endl;
250 cout <<
" THcRaster is using parameters for beam angle position" <<
" xp = " <<
fgbeam_xpoff<<
" yp = " <<
fgbeam_ypoff<< endl;
267 if( mode == kDefine && fIsSetup )
return kOK;
268 fIsSetup = ( mode == kDefine );
273 {
"frxaRawAdc",
"Raster XA raw ADC",
"FRXA_rawadc"},
274 {
"fryaRawAdc",
"Raster YA raw ADC",
"FRYA_rawadc"},
275 {
"frxbRawAdc",
"Raster XB raw ADC",
"FRXB_rawadc"},
276 {
"frybRawAdc",
"Raster YB raw ADC",
"FRYB_rawadc"},
277 {
"frxa_adc",
"Raster XA ADC",
"fXA_ADC"},
278 {
"frya_adc",
"Raster YA ADC",
"fYA_ADC"},
279 {
"frxb_adc",
"Raster XB ADC",
"fXB_ADC"},
280 {
"fryb_adc",
"Raster YB ADC",
"fYB_ADC"},
281 {
"fr_xa",
"Raster XA position",
"fXA_pos"},
282 {
"fr_ya",
"Raster YA position",
"fYA_pos"},
283 {
"fr_xb",
"Raster XB position",
"fXB_pos"},
284 {
"fr_yb",
"Raster YB position",
"fYB_pos"},
285 {
"fr_xbpm_tar",
"X BPM at target (+X is beam right)",
"fXbpm_tar"},
286 {
"fr_ybpm_tar",
"Y BPM at target (+Y is up)",
"fYbpm_tar"},
287 {
"fr_xbpmA",
"X BPM at BPMA (+X is beam right)",
"fXbpm_A"},
288 {
"fr_ybpmA",
"Y BPM at BPMA (+Y is up)",
"fYbpm_A"},
289 {
"fr_xbpmB",
"X BPM at BPMB (+X is beam right)",
"fXbpm_B"},
290 {
"fr_ybpmB",
"Y BPM at BPMB (+Y is up)",
"fYbpm_B"},
291 {
"fr_xbpmC",
"X BPM at BPMC (+X is beam right)",
"fXbpm_C"},
292 {
"fr_ybpmC",
"Y BPM at BPMC (+Y is up)",
"fYbpm_C"},
293 {
"ebeam_epics",
"Beam energy of epics variable HALLC:p",
"fEbeamEpics"},
297 return DefineVarsFromList( vars, mode );
338 while(ihit < nrawhits) {
355 if (nraster ==0)
fPedADC[0] = pulseIntRaw;
356 if (nraster ==1)
fPedADC[1] = pulseIntRaw;
357 if (nraster ==2)
fPedADC[2] = pulseIntRaw;
358 if (nraster ==3)
fPedADC[3] = pulseIntRaw;
std::string GetName(const std::string &scope_name)
virtual Int_t FillMap(THaDetMap *detmap, const char *detectorname)
EStatus Init(const TDatime &run_time)
Int_t ReadDatabase(const TDatime &date)
Double_t fFrXB_ADC_zero_offset
Double_t fFrYA_ADC_zero_offset
TClonesArray * fRawHitList
Int_t Decode(const THaEvData &)
void CalculatePedestals()
Bool_t fFlag_use_EPICS_bpm
TObject * ConstructedAt(Int_t idx)
void SetXYZ(Double_t x, Double_t y, Double_t z)
Double_t fEbeamEpics_prev
void Error(const char *location, const char *msgfmt,...)
virtual void Clear(Option_t *option="")
void InitHitList(THaDetMap *detmap, const char *hitclass, Int_t maxhits, Int_t tdcref_cut=0, Int_t adcref_cut=0)
Save the electronics module to detector mapping and initialize a hit array of hits of class hitclass...
THcRawAdcHit & GetRawAdcHitPos()
void Clear(Option_t *opt="")
TClonesArray * frPosAdcPulseIntRaw
Class representing a single raw hit for the raster.
Double_t fEbeamEpics_read
Int_t DefineVariables(EMode mode)
Double_t fFrYB_ADC_zero_offset
Int_t GetPulseIntRaw(UInt_t iPulse=0) const
Gets raw pulse integral. In channels.
Detector class for fast raster.
R__EXTERN class THcDetectorMap * gHcDetectorMap
Int_t LoadParmValues(const DBRequest *list, const char *prefix="")
Retrieve parameter values from the parameter cache.
UInt_t GetNPulses() const
Gets number of set pulses.
THaEpicsEvtHandler * fEpicsHandler
Double_t fFrXA_ADC_zero_offset
ClassImp(THcDCLookupTTDConv) THcDCLookupTTDConv
void AccumulatePedestals(TClonesArray *rawhits)
R__EXTERN class THcParmList * gHcParms
Double_t Sqrt(Double_t x)
TObject * At(Int_t idx) const
void GetData(std::string s, double *x, double *y, double *ey)
Class representing a single raw ADC hit.
virtual Int_t DecodeToHitList(const THaEvData &evdata, Bool_t suppress=kFALSE)
Populate the hitlist from the raw event data.