30 const char* description ) :
112 if(
fNelem == 0 )
return 0;
114 if( view < 0 || view >=
fNviews ) {
116 msg <<
"View out of range (= " << view <<
", max " <<
fNviews <<
"). "
117 <<
"Should never happen. Call expert.";
118 throw logic_error(msg.str());
134 Error(
Here(
here),
"No detector map entries found. Check database." );
135 }
else if( ret == -1 ) {
137 "Check database or add module in THaDetMap.cxx." );
138 }
else if( ret == -128 ) {
140 "detector map. Call expert." );
141 }
else if( ret < 0 ) {
143 "(wrong number of values). Check database." );
216 const char*
const here =
"ReadGeometry";
218 vector<double> position,
size, angles;
219 Bool_t optional = !required;
220 DBRequest request[] = {
221 {
"position", &position, kDoubleV, 0, optional, 0,
222 "\"position\" (detector position [m])" },
223 {
"size", &
size, kDoubleV, 0, optional, 0,
224 "\"size\" (detector size [m])" },
225 {
"angle", &angles, kDoubleV, 0,
true, 0,
226 "\"angle\" (detector angles(s) [deg]" },
233 if( !position.empty() ) {
234 if( position.size() != 3 ) {
236 "detector position. Must be exactly 3. Fix database.",
245 if( !
size.empty() ) {
246 if(
size.size() != 3 ) {
248 "detector size. Must be exactly 3. Fix database.",
size.size() );
252 Error(
Here(
here),
"Illegal zero detector dimension. Fix database." );
257 "Taking absolute. Check database." );
266 if( !angles.empty() ) {
267 if( angles.size() != 1 && angles.size() != 3 ) {
269 "detector angle(s). Must be either 1 or 3. Fix database.",
279 if( angles.size() == 1 ) {
316 msg << hitinfo.
nhit <<
" hits on "
319 << hitinfo.
crate <<
"/" << hitinfo.
slot <<
"/" << hitinfo.
chan;
330 msg <<
"Failed to load data for "
333 << hitinfo.
crate <<
"/" << hitinfo.
slot <<
"/" << hitinfo.
chan
334 <<
". Skipping channel.";
351 detData->DefineVariables(
mode);
379 if( !detData->HitDone() )
380 detData->StoreHit(hitinfo,
data);
414 const char*
const here =
"Decode";
417 bool has_warning =
false;
422 const auto& hitinfo = *hitIter;
423 if( hitinfo.nhit > 1 ) {
450 detData->ClearHitDone();
size_t size(const MatrixT &matrix)
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char mode
static const char *const here
static Int_t LoadDB(FILE *file, const TDatime &date, const DBRequest *request, const char *prefix, Int_t search=0, const char *here="THaAnalysisObject::LoadDB")
virtual const char * Here(const char *) const
virtual Int_t ReadDatabase(const TDatime &date)
std::map< std::string, UInt_t > fMessages
virtual Int_t DefineVariables(EMode mode=kDefine)
UInt_t fNEventsWithWarnings
virtual void Clear(Option_t *="")
Decoder::Module *Decoder::ChannelType type
virtual void Print(Option_t *opt="") const
THaDetMap::Iterator MakeIterator(const THaEvData &evdata)
virtual Int_t Fill(const std::vector< Int_t > &values, UInt_t flags=0)
Int_t FillDetMap(const std::vector< Int_t > &values, UInt_t flags=0, const char *here="FillDetMap")
virtual void Clear(Option_t *="")
virtual Int_t StoreHit(const DigitizerHitInfo_t &hitinfo, UInt_t data)
void PrintDetMap(Option_t *opt="") const
virtual Bool_t IsInActiveArea(Double_t x, Double_t y) const
virtual Int_t ReadGeometry(FILE *file, const TDatime &date, Bool_t required=false)
void DataLoadWarning(const DigitizerHitInfo_t &hitinfo, const char *here)
virtual Int_t DefineVariables(EMode mode=kDefine)
virtual void DefineAxes(Double_t rotation_angle)
virtual ~THaDetectorBase()
void DebugWarning(const char *here, const char *msg, UInt_t evnum)
TVector3 DetToTrackCoord(const TVector3 &point) const
TVector3 TrackToDetCoord(const TVector3 &point) const
void MultipleHitWarning(const DigitizerHitInfo_t &hitinfo, const char *here)
virtual OptUInt_t LoadData(const THaEvData &evdata, const DigitizerHitInfo_t &hitinfo)
VecDetData_t fDetectorData
virtual void Reset(Option_t *opt="")
virtual Int_t GetView(const DigitizerHitInfo_t &hitinfo) const
virtual Int_t ReadDatabase(const TDatime &date)
virtual Int_t Decode(const THaEvData &)
virtual void PrintDecodedData(const THaEvData &evdata) const
UInt_t GetData(UInt_t crate, UInt_t slot, UInt_t chan, UInt_t hit) const
virtual void Warning(const char *method, const char *msgfmt,...) const
virtual void Error(const char *method, const char *msgfmt,...) const
void SetXYZ(Double_t x, Double_t y, Double_t z)
TVector3 Cross(const TVector3 &) const
constexpr Double_t DegToRad()