StripEnergyThresholdFinder for per-strip slow and fast threshold extraction with diagnostics#166
Conversation
|
I still need to fix all of the code style issues and work on some optimizations to speed the code up a bit. |
| struct StripKey | ||
| { | ||
| int det; | ||
| char side; | ||
| int strip; | ||
|
|
||
| bool operator<(const StripKey& o) const | ||
| { | ||
| if(det!=o.det) return det<o.det; | ||
| if(side!=o.side) return side<o.side; | ||
| return strip<o.strip; | ||
| } | ||
| }; |
There was a problem hiding this comment.
Can you not reuse the code from MStripMap.cxx here?
| class EnergyCalHelper | ||
| { | ||
| public: | ||
|
|
||
| struct Coeff | ||
| { | ||
| double c0=0; | ||
| double c1=0; | ||
| double c2=0; | ||
| double c3=0; | ||
| }; | ||
|
|
||
| bool Load(const string& fileName,int nDet=64,int nStrip=65) | ||
| { | ||
| m_NDet=nDet; | ||
| m_NStrip=nStrip; | ||
|
|
||
| m_Coeffs.resize(m_NDet); | ||
|
|
||
| for(int d=0;d<m_NDet;d++) | ||
| { | ||
| m_Coeffs[d].resize(2); | ||
|
|
||
| for(int s=0;s<2;s++) | ||
| m_Coeffs[d][s].resize(m_NStrip); | ||
| } | ||
|
|
||
| ifstream in(fileName); | ||
|
|
||
| if(!in) | ||
| { | ||
| cout<<"Unable to open calibration file "<<fileName<<endl; | ||
| return false; | ||
| } | ||
|
|
||
| string line; | ||
|
|
||
| while(getline(in,line)) | ||
| { | ||
| if(line.empty()) continue; | ||
|
|
||
| stringstream ss(line); | ||
|
|
||
| string tag; | ||
| ss>>tag; | ||
|
|
||
| if(tag!="CM") continue; | ||
|
|
||
| string unused; | ||
| int det=-1; | ||
| int strip=-1; | ||
| string side; | ||
| string order; | ||
|
|
||
| ss>>unused>>det>>strip>>side>>order; | ||
|
|
||
| if(det<0||det>=m_NDet) continue; | ||
| if(strip<0||strip>=m_NStrip) continue; | ||
|
|
||
| int sideInt=(side=="l")?0:1; | ||
|
|
||
| Coeff c; | ||
|
|
||
| if(order=="poly1zero") | ||
| ss>>c.c1; | ||
| else if(order=="poly1") | ||
| ss>>c.c0>>c.c1; | ||
| else if(order=="poly2") | ||
| ss>>c.c0>>c.c1>>c.c2; | ||
| else | ||
| ss>>c.c0>>c.c1>>c.c2>>c.c3; | ||
|
|
||
| m_Coeffs[det][sideInt][strip]=c; | ||
| } | ||
|
|
||
| return true; | ||
| } | ||
|
|
||
| double ADCToEnergy(int det,char side,int strip,double adc) const | ||
| { | ||
| int sideInt=(side=='l')?0:1; | ||
| const Coeff& c=m_Coeffs[det][sideInt][strip]; | ||
|
|
||
| return c.c3*pow(adc,3)+c.c2*pow(adc,2)+c.c1*adc+c.c0; | ||
| } | ||
|
|
||
| private: | ||
|
|
||
| int m_NDet; | ||
| int m_NStrip; | ||
|
|
||
| vector<vector<vector<Coeff>>> m_Coeffs; | ||
| }; |
There was a problem hiding this comment.
This essentially does what MModuleEnergyCalibration does.
Can you create a MModuleEnergyCalibration variable in this app and use its functions here to avoid code duplication and keep the code for this app short?
| class TACCalHelper | ||
| { | ||
| public: | ||
|
|
||
| struct Coeff | ||
| { | ||
| double slope = 0; | ||
| double offset = 0; | ||
| }; | ||
|
|
||
| bool Load(const string& fileName) | ||
| { | ||
| ifstream in(fileName); | ||
| if(!in) | ||
| { | ||
| cout<<"Failed to open TAC calibration file: "<<fileName<<endl; | ||
| return false; | ||
| } | ||
|
|
||
| string line; | ||
| getline(in,line); // skip header | ||
|
|
||
| while(getline(in,line)) | ||
| { | ||
| if(line.empty()) continue; | ||
|
|
||
| stringstream ss(line); | ||
|
|
||
| int strip_id, det, side, strip; | ||
| double slope, slope_err, offset, offset_err; | ||
|
|
||
| ss >> strip_id >> det >> side >> strip | ||
| >> slope >> slope_err >> offset >> offset_err; | ||
|
|
||
| char sideChar = (side==0) ? 'l' : 'h'; | ||
|
|
||
| StripKey key{det, sideChar, strip}; | ||
|
|
||
| m_Coeffs[key] = {slope, offset}; | ||
| } | ||
|
|
||
| return true; | ||
| } | ||
|
|
||
| double TACToEnergy(int det, char side, int strip, double tac) const | ||
| { | ||
| StripKey key{det, side, strip}; | ||
|
|
||
| auto it = m_Coeffs.find(key); | ||
| if(it == m_Coeffs.end()) return 0; | ||
|
|
||
| return it->second.slope * tac + it->second.offset; | ||
| } | ||
|
|
||
| private: | ||
| map<StripKey, Coeff> m_Coeffs; | ||
| }; |
There was a problem hiding this comment.
This already exists in MModuleTACcut --> use existing class to avoid code duplication here.
| private: | ||
|
|
||
| // --- Configuration --- | ||
| EnergyCalHelper m_EnergyCal; |
There was a problem hiding this comment.
| EnergyCalHelper m_EnergyCal; | |
| MModuleEnergyCalibration m_EnergyCal; |
| #include "MReadOutAssembly.h" | ||
| #include "MStripHit.h" | ||
| #include "MString.h" | ||
|
|
There was a problem hiding this comment.
| #include "MModuleEnergyCalibration.h" | |
| #include "MModuleTACcut.h" | |
| #include "MStripMap.h" |
|
|
||
|
|
||
| //EnergyCalHelper m_EnergyCal; | ||
| TACCalHelper m_EnergyCal_TAC; |
There was a problem hiding this comment.
That's a weird name, is Energy intended in this name? I would just call it m_TACCal.. And if it's called m_..., consider making this a (private) member variable of the class -- just like m_EnergyCal
Also: where is this TACCalHelper ever used?
| //EnergyCalHelper m_EnergyCal; | ||
| TACCalHelper m_EnergyCal_TAC; | ||
|
|
||
| if(!m_EnergyCal.Load(m_CalibrationFile.Data())) |
There was a problem hiding this comment.
MModuleEnergyCalibration has a ReadEnergyCalibrationFile function that you could call here instead:
| if(!m_EnergyCal.Load(m_CalibrationFile.Data())) | |
| if (m_EnergyCal.ReadEnergyCalibrationFile(m_CalibrationFile) == false) |
| EnergyCalHelper m_EnergyCal; | ||
| vector<string> m_InputFiles; | ||
| MString m_CalibrationFile; | ||
| MString m_TACCalibrationFile; |
| @@ -0,0 +1,2045 @@ | |||
| /* | |||
| * StripEnergyThresholdFinder.cpp | |||
There was a problem hiding this comment.
| * StripEnergyThresholdFinder.cpp | |
| * StripEnergyThresholdFinder.cxx |
?
| h5c++ -O2 StripEnergyThresholdFinder.cxx -o StripEnergyThresholdFinder \ | ||
| $(root-config --cflags --libs) \ | ||
| -I$MEGALIB/include \ | ||
| -I~/COSItools/nuclearizer/include \ | ||
| -L$MEGALIB/lib \ | ||
| -lMEGAlib -lNuclearizer -lyaml-cpp |
There was a problem hiding this comment.
I had to do two things to make this compile:
- First: I had to install the required yaml package
sudo apt-get install libyaml-cpp-dev, or I would get this:StripEnergyThresholdFinder.cxx:62:10: fatal error: yaml-cpp/yaml.h: No such file or directory 62 | #include <yaml-cpp/yaml.h> | ^~~~~~~~~~~~~~~~~ compilation terminated. make[1]: *** [Makefile:34: /home/hagemann/Software/COSItools/megalib/bin/StripEnergyThresholdFinder] Error 1 make[1]: *** Waiting for unfinished jobs.... - Second, the compile command here only works if COSItools is in your home directory (which it isn't on my laptop, so the compile failed). Update this to:
Suggested change
h5c++ -O2 StripEnergyThresholdFinder.cxx -o StripEnergyThresholdFinder \ $(root-config --cflags --libs) \ -I$MEGALIB/include \ -I~/COSItools/nuclearizer/include \ -L$MEGALIB/lib \ -lMEGAlib -lNuclearizer -lyaml-cpp h5c++ -O2 StripEnergyThresholdFinder.cxx -o StripEnergyThresholdFinder \ $(root-config --cflags --libs) \ -I$MEGALIB/include \ -I$NUCLEARIZER/include \ -L$MEGALIB/lib \ -lMEGAlib -lNuclearizer -lyaml-cpp
There was a problem hiding this comment.
Also: this currently breaks the general make command, because this app cannot be built using the make apps command in the nuclearizer/src/Makefile.
For reference, this is the error message I'm getting.
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `MStripThresholdFinder::ParseCommandLine(int, char**)':
/home/hagemann/Software/COSItools/nuclearizer/apps/StripEnergyThresholdFinder.cxx:432:(.text+0x63a): undefined reference to `YAML::LoadFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::TypedBadConversion<int>::~TypedBadConversion()':
/usr/include/yaml-cpp/exceptions.h:247:(.text._ZN4YAML18TypedBadConversionIiED2Ev[_ZN4YAML18TypedBadConversionIiED5Ev]+0x17): undefined reference to `YAML::BadConversion::~BadConversion()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::TypedBadConversion<int>::~TypedBadConversion()':
/usr/include/yaml-cpp/exceptions.h:247:(.text._ZN4YAML18TypedBadConversionIiED0Ev[_ZN4YAML18TypedBadConversionIiED5Ev]+0x17): undefined reference to `YAML::BadConversion::~BadConversion()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::TypedBadConversion<double>::~TypedBadConversion()':
/usr/include/yaml-cpp/exceptions.h:247:(.text._ZN4YAML18TypedBadConversionIdED2Ev[_ZN4YAML18TypedBadConversionIdED5Ev]+0x17): undefined reference to `YAML::BadConversion::~BadConversion()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::TypedBadConversion<double>::~TypedBadConversion()':
/usr/include/yaml-cpp/exceptions.h:247:(.text._ZN4YAML18TypedBadConversionIdED0Ev[_ZN4YAML18TypedBadConversionIdED5Ev]+0x17): undefined reference to `YAML::BadConversion::~BadConversion()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::TypedBadConversion<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::~TypedBadConversion()':
/usr/include/yaml-cpp/exceptions.h:247:(.text._ZN4YAML18TypedBadConversionISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEED2Ev[_ZN4YAML18TypedBadConversionISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEED5Ev]+0x17): undefined reference to `YAML::BadConversion::~BadConversion()'
/usr/bin/ld: /tmp/ccF55MEJ.o:/usr/include/yaml-cpp/exceptions.h:247: more undefined references to `YAML::BadConversion::~BadConversion()' follow
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::Exception::Exception(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:156:(.text._ZN4YAML9ExceptionC2ERKNS_4MarkERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN4YAML9ExceptionC5ERKNS_4MarkERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x48): undefined reference to `vtable for YAML::Exception'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::RepresentationException::RepresentationException(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:189:(.text._ZN4YAML11InvalidNodeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN4YAML11InvalidNodeC5ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x74): undefined reference to `vtable for YAML::RepresentationException'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::InvalidNode::InvalidNode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:233:(.text._ZN4YAML11InvalidNodeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN4YAML11InvalidNodeC5ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x8a): undefined reference to `vtable for YAML::InvalidNode'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::Node::Type() const':
/usr/include/yaml-cpp/node/impl.h:84:(.text._ZNK4YAML4Node4TypeEv[_ZNK4YAML4Node4TypeEv]+0x47): undefined reference to `YAML::InvalidNode::~InvalidNode()'
/usr/bin/ld: /usr/include/yaml-cpp/node/impl.h:84:(.text._ZNK4YAML4Node4TypeEv[_ZNK4YAML4Node4TypeEv]+0x4e): undefined reference to `typeinfo for YAML::InvalidNode'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::Node::Scalar[abi:cxx11]() const':
/usr/include/yaml-cpp/node/impl.h:168:(.text._ZNK4YAML4Node6ScalarB5cxx11Ev[_ZNK4YAML4Node6ScalarB5cxx11Ev]+0x48): undefined reference to `YAML::InvalidNode::~InvalidNode()'
/usr/bin/ld: /usr/include/yaml-cpp/node/impl.h:168:(.text._ZNK4YAML4Node6ScalarB5cxx11Ev[_ZNK4YAML4Node6ScalarB5cxx11Ev]+0x4f): undefined reference to `typeinfo for YAML::InvalidNode'
/usr/bin/ld: /usr/include/yaml-cpp/node/impl.h:169:(.text._ZNK4YAML4Node6ScalarB5cxx11Ev[_ZNK4YAML4Node6ScalarB5cxx11Ev]+0x5c): undefined reference to `YAML::detail::node_data::empty_scalar[abi:cxx11]()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::Node::Mark() const':
/usr/include/yaml-cpp/node/impl.h:77:(.text._ZNK4YAML4Node4MarkEv[_ZNK4YAML4Node4MarkEv]+0x5d): undefined reference to `YAML::InvalidNode::~InvalidNode()'
/usr/bin/ld: /usr/include/yaml-cpp/node/impl.h:77:(.text._ZNK4YAML4Node4MarkEv[_ZNK4YAML4Node4MarkEv]+0x64): undefined reference to `typeinfo for YAML::InvalidNode'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::RepresentationException::RepresentationException(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:189:(.text._ZN4YAML13BadConversionC2ERKNS_4MarkE[_ZN4YAML13BadConversionC5ERKNS_4MarkE]+0x4c): undefined reference to `vtable for YAML::RepresentationException'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::BadConversion::BadConversion(YAML::Mark const&)':
/usr/include/yaml-cpp/exceptions.h:241:(.text._ZN4YAML13BadConversionC2ERKNS_4MarkE[_ZN4YAML13BadConversionC5ERKNS_4MarkE]+0x62): undefined reference to `vtable for YAML::BadConversion'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > YAML::Node::as<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >() const':
/usr/include/yaml-cpp/node/impl.h:155:(.text._ZNK4YAML4Node2asINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEET_v[_ZNK4YAML4Node2asINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEET_v]+0x7c): undefined reference to `YAML::InvalidNode::~InvalidNode()'
/usr/bin/ld: /usr/include/yaml-cpp/node/impl.h:155:(.text._ZNK4YAML4Node2asINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEET_v[_ZNK4YAML4Node2asINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEET_v]+0x83): undefined reference to `typeinfo for YAML::InvalidNode'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node_ref::begin()':
/usr/include/yaml-cpp/node/detail/node_ref.h:46:(.text._ZNK4YAML4Node5beginEv[_ZNK4YAML4Node5beginEv]+0xb2): undefined reference to `YAML::detail::node_data::begin()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node_ref::end()':
/usr/include/yaml-cpp/node/detail/node_ref.h:51:(.text._ZNK4YAML4Node3endEv[_ZNK4YAML4Node3endEv]+0xb2): undefined reference to `YAML::detail::node_data::end()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `int YAML::Node::as<int>() const':
/usr/include/yaml-cpp/node/impl.h:155:(.text._ZNK4YAML4Node2asIiEET_v[_ZNK4YAML4Node2asIiEET_v]+0x76): undefined reference to `YAML::InvalidNode::~InvalidNode()'
/usr/bin/ld: /usr/include/yaml-cpp/node/impl.h:155:(.text._ZNK4YAML4Node2asIiEET_v[_ZNK4YAML4Node2asIiEET_v]+0x7d): undefined reference to `typeinfo for YAML::InvalidNode'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `double YAML::Node::as<double>() const':
/usr/include/yaml-cpp/node/impl.h:155:(.text._ZNK4YAML4Node2asIdEET_v[_ZNK4YAML4Node2asIdEET_v]+0x76): undefined reference to `YAML::InvalidNode::~InvalidNode()'
/usr/bin/ld: /usr/include/yaml-cpp/node/impl.h:155:(.text._ZNK4YAML4Node2asIdEET_v[_ZNK4YAML4Node2asIdEET_v]+0x7d): undefined reference to `typeinfo for YAML::InvalidNode'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::RepresentationException::RepresentationException(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:189:(.text._ZN4YAML12BadSubscriptC2IA9_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA9_cEERKNS_4MarkERKT_]+0x41): undefined reference to `vtable for YAML::RepresentationException'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::BadSubscript::BadSubscript<char [9]>(YAML::Mark const&, char const (&) [9])':
/usr/include/yaml-cpp/exceptions.h:264:(.text._ZN4YAML12BadSubscriptC2IA9_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA9_cEERKNS_4MarkERKT_]+0x57): undefined reference to `vtable for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::RepresentationException::RepresentationException(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:189:(.text._ZN4YAML12BadSubscriptC2IA12_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA12_cEERKNS_4MarkERKT_]+0x41): undefined reference to `vtable for YAML::RepresentationException'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::BadSubscript::BadSubscript<char [12]>(YAML::Mark const&, char const (&) [12])':
/usr/include/yaml-cpp/exceptions.h:264:(.text._ZN4YAML12BadSubscriptC2IA12_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA12_cEERKNS_4MarkERKT_]+0x57): undefined reference to `vtable for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::RepresentationException::RepresentationException(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:189:(.text._ZN4YAML12BadSubscriptC2IA23_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA23_cEERKNS_4MarkERKT_]+0x41): undefined reference to `vtable for YAML::RepresentationException'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::BadSubscript::BadSubscript<char [23]>(YAML::Mark const&, char const (&) [23])':
/usr/include/yaml-cpp/exceptions.h:264:(.text._ZN4YAML12BadSubscriptC2IA23_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA23_cEERKNS_4MarkERKT_]+0x57): undefined reference to `vtable for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::RepresentationException::RepresentationException(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:189:(.text._ZN4YAML12BadSubscriptC2IA15_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA15_cEERKNS_4MarkERKT_]+0x41): undefined reference to `vtable for YAML::RepresentationException'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::BadSubscript::BadSubscript<char [15]>(YAML::Mark const&, char const (&) [15])':
/usr/include/yaml-cpp/exceptions.h:264:(.text._ZN4YAML12BadSubscriptC2IA15_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA15_cEERKNS_4MarkERKT_]+0x57): undefined reference to `vtable for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::RepresentationException::RepresentationException(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:189:(.text._ZN4YAML12BadSubscriptC2IA18_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA18_cEERKNS_4MarkERKT_]+0x41): undefined reference to `vtable for YAML::RepresentationException'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::BadSubscript::BadSubscript<char [18]>(YAML::Mark const&, char const (&) [18])':
/usr/include/yaml-cpp/exceptions.h:264:(.text._ZN4YAML12BadSubscriptC2IA18_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA18_cEERKNS_4MarkERKT_]+0x57): undefined reference to `vtable for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::RepresentationException::RepresentationException(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:189:(.text._ZN4YAML12BadSubscriptC2IA21_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA21_cEERKNS_4MarkERKT_]+0x41): undefined reference to `vtable for YAML::RepresentationException'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::BadSubscript::BadSubscript<char [21]>(YAML::Mark const&, char const (&) [21])':
/usr/include/yaml-cpp/exceptions.h:264:(.text._ZN4YAML12BadSubscriptC2IA21_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA21_cEERKNS_4MarkERKT_]+0x57): undefined reference to `vtable for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::RepresentationException::RepresentationException(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:189:(.text._ZN4YAML12BadSubscriptC2IA6_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA6_cEERKNS_4MarkERKT_]+0x41): undefined reference to `vtable for YAML::RepresentationException'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::BadSubscript::BadSubscript<char [6]>(YAML::Mark const&, char const (&) [6])':
/usr/include/yaml-cpp/exceptions.h:264:(.text._ZN4YAML12BadSubscriptC2IA6_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA6_cEERKNS_4MarkERKT_]+0x57): undefined reference to `vtable for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::RepresentationException::RepresentationException(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:189:(.text._ZN4YAML12BadSubscriptC2IA11_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA11_cEERKNS_4MarkERKT_]+0x41): undefined reference to `vtable for YAML::RepresentationException'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::BadSubscript::BadSubscript<char [11]>(YAML::Mark const&, char const (&) [11])':
/usr/include/yaml-cpp/exceptions.h:264:(.text._ZN4YAML12BadSubscriptC2IA11_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA11_cEERKNS_4MarkERKT_]+0x57): undefined reference to `vtable for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::RepresentationException::RepresentationException(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:189:(.text._ZN4YAML12BadSubscriptC2IA17_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA17_cEERKNS_4MarkERKT_]+0x41): undefined reference to `vtable for YAML::RepresentationException'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::BadSubscript::BadSubscript<char [17]>(YAML::Mark const&, char const (&) [17])':
/usr/include/yaml-cpp/exceptions.h:264:(.text._ZN4YAML12BadSubscriptC2IA17_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA17_cEERKNS_4MarkERKT_]+0x57): undefined reference to `vtable for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::RepresentationException::RepresentationException(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:189:(.text._ZN4YAML12BadSubscriptC2IA10_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA10_cEERKNS_4MarkERKT_]+0x41): undefined reference to `vtable for YAML::RepresentationException'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::BadSubscript::BadSubscript<char [10]>(YAML::Mark const&, char const (&) [10])':
/usr/include/yaml-cpp/exceptions.h:264:(.text._ZN4YAML12BadSubscriptC2IA10_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA10_cEERKNS_4MarkERKT_]+0x57): undefined reference to `vtable for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::RepresentationException::RepresentationException(YAML::Mark const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/exceptions.h:189:(.text._ZN4YAML12BadSubscriptC2IA7_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA7_cEERKNS_4MarkERKT_]+0x41): undefined reference to `vtable for YAML::RepresentationException'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::BadSubscript::BadSubscript<char [7]>(YAML::Mark const&, char const (&) [7])':
/usr/include/yaml-cpp/exceptions.h:264:(.text._ZN4YAML12BadSubscriptC2IA7_cEERKNS_4MarkERKT_[_ZN4YAML12BadSubscriptC5IA7_cEERKNS_4MarkERKT_]+0x57): undefined reference to `vtable for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node_ref::mark_defined()':
/usr/include/yaml-cpp/node/detail/node_ref.h:30:(.text._ZN4YAML6detail4node12mark_definedEv[_ZN4YAML6detail4node12mark_definedEv]+0x1c): undefined reference to `YAML::detail::node_data::mark_defined()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node_ref::set_null()':
/usr/include/yaml-cpp/node/detail/node_ref.h:36:(.text._ZN4YAML6detail4node8set_nullEv[_ZN4YAML6detail4node8set_nullEv]+0x14): undefined reference to `YAML::detail::node_data::set_null()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::Node::EnsureNodeExists() const':
/usr/include/yaml-cpp/node/impl.h:60:(.text._ZNK4YAML4Node16EnsureNodeExistsEv[_ZNK4YAML4Node16EnsureNodeExistsEv]+0x38): undefined reference to `YAML::InvalidNode::~InvalidNode()'
/usr/bin/ld: /usr/include/yaml-cpp/node/impl.h:60:(.text._ZNK4YAML4Node16EnsureNodeExistsEv[_ZNK4YAML4Node16EnsureNodeExistsEv]+0x3f): undefined reference to `typeinfo for YAML::InvalidNode'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::memory_holder::create_node()':
/usr/include/yaml-cpp/node/detail/memory.h:38:(.text._ZNK4YAML4Node16EnsureNodeExistsEv[_ZNK4YAML4Node16EnsureNodeExistsEv]+0x77): undefined reference to `YAML::detail::memory::create_node()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node_ref::set_scalar(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/yaml-cpp/node/detail/node_ref.h:37:(.text._ZN4YAML6detail4node10set_scalarERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN4YAML6detail4node10set_scalarERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x1f): undefined reference to `YAML::detail::node_data::set_scalar(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::memory_holder::create_node()':
/usr/include/yaml-cpp/node/detail/memory.h:38:(.text._ZN4YAML4NodeC2IPKcEERKT_[_ZN4YAML4NodeC5IPKcEERKT_]+0x52): undefined reference to `YAML::detail::memory::create_node()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::convert_to_node<char [12]>(char const (&) [12], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:229:(.text._ZN4YAML6detail9node_data15convert_to_nodeIA12_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data15convert_to_nodeIA12_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x45): undefined reference to `YAML::detail::memory_holder::merge(YAML::detail::memory_holder&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::convert_to_node<char [23]>(char const (&) [23], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:229:(.text._ZN4YAML6detail9node_data15convert_to_nodeIA23_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data15convert_to_nodeIA23_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x45): undefined reference to `YAML::detail::memory_holder::merge(YAML::detail::memory_holder&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::convert_to_node<char [15]>(char const (&) [15], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:229:(.text._ZN4YAML6detail9node_data15convert_to_nodeIA15_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data15convert_to_nodeIA15_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x45): undefined reference to `YAML::detail::memory_holder::merge(YAML::detail::memory_holder&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::convert_to_node<char [18]>(char const (&) [18], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:229:(.text._ZN4YAML6detail9node_data15convert_to_nodeIA18_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data15convert_to_nodeIA18_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x45): undefined reference to `YAML::detail::memory_holder::merge(YAML::detail::memory_holder&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::convert_to_node<char [9]>(char const (&) [9], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:229:(.text._ZN4YAML6detail9node_data15convert_to_nodeIA9_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data15convert_to_nodeIA9_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x45): undefined reference to `YAML::detail::memory_holder::merge(YAML::detail::memory_holder&)'
/usr/bin/ld: /tmp/ccF55MEJ.o:/usr/include/yaml-cpp/node/detail/impl.h:229: more undefined references to `YAML::detail::memory_holder::merge(YAML::detail::memory_holder&)' follow
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [9]>(char const (&) [9], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:154:(.text._ZN4YAML6detail9node_data3getIA9_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA9_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x68): undefined reference to `YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder> const&)'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA9_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA9_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xed): undefined reference to `YAML::BadSubscript::~BadSubscript()'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA9_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA9_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xf4): undefined reference to `typeinfo for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::memory_holder::create_node()':
/usr/include/yaml-cpp/node/detail/memory.h:38:(.text._ZN4YAML6detail9node_data3getIA9_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA9_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x140): undefined reference to `YAML::detail::memory::create_node()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [9]>(char const (&) [9], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:170:(.text._ZN4YAML6detail9node_data3getIA9_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA9_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x151): undefined reference to `YAML::detail::node_data::insert_map_pair(YAML::detail::node&, YAML::detail::node&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [12]>(char const (&) [12], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:154:(.text._ZN4YAML6detail9node_data3getIA12_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA12_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x68): undefined reference to `YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder> const&)'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA12_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA12_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xed): undefined reference to `YAML::BadSubscript::~BadSubscript()'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA12_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA12_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xf4): undefined reference to `typeinfo for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::memory_holder::create_node()':
/usr/include/yaml-cpp/node/detail/memory.h:38:(.text._ZN4YAML6detail9node_data3getIA12_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA12_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x140): undefined reference to `YAML::detail::memory::create_node()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [12]>(char const (&) [12], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:170:(.text._ZN4YAML6detail9node_data3getIA12_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA12_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x151): undefined reference to `YAML::detail::node_data::insert_map_pair(YAML::detail::node&, YAML::detail::node&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [23]>(char const (&) [23], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:154:(.text._ZN4YAML6detail9node_data3getIA23_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA23_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x68): undefined reference to `YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder> const&)'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA23_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA23_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xed): undefined reference to `YAML::BadSubscript::~BadSubscript()'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA23_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA23_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xf4): undefined reference to `typeinfo for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::memory_holder::create_node()':
/usr/include/yaml-cpp/node/detail/memory.h:38:(.text._ZN4YAML6detail9node_data3getIA23_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA23_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x140): undefined reference to `YAML::detail::memory::create_node()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [23]>(char const (&) [23], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:170:(.text._ZN4YAML6detail9node_data3getIA23_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA23_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x151): undefined reference to `YAML::detail::node_data::insert_map_pair(YAML::detail::node&, YAML::detail::node&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [15]>(char const (&) [15], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:154:(.text._ZN4YAML6detail9node_data3getIA15_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA15_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x68): undefined reference to `YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder> const&)'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA15_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA15_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xed): undefined reference to `YAML::BadSubscript::~BadSubscript()'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA15_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA15_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xf4): undefined reference to `typeinfo for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::memory_holder::create_node()':
/usr/include/yaml-cpp/node/detail/memory.h:38:(.text._ZN4YAML6detail9node_data3getIA15_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA15_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x140): undefined reference to `YAML::detail::memory::create_node()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [15]>(char const (&) [15], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:170:(.text._ZN4YAML6detail9node_data3getIA15_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA15_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x151): undefined reference to `YAML::detail::node_data::insert_map_pair(YAML::detail::node&, YAML::detail::node&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [18]>(char const (&) [18], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:154:(.text._ZN4YAML6detail9node_data3getIA18_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA18_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x68): undefined reference to `YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder> const&)'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA18_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA18_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xed): undefined reference to `YAML::BadSubscript::~BadSubscript()'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA18_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA18_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xf4): undefined reference to `typeinfo for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::memory_holder::create_node()':
/usr/include/yaml-cpp/node/detail/memory.h:38:(.text._ZN4YAML6detail9node_data3getIA18_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA18_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x140): undefined reference to `YAML::detail::memory::create_node()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [18]>(char const (&) [18], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:170:(.text._ZN4YAML6detail9node_data3getIA18_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA18_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x151): undefined reference to `YAML::detail::node_data::insert_map_pair(YAML::detail::node&, YAML::detail::node&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [21]>(char const (&) [21], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:154:(.text._ZN4YAML6detail9node_data3getIA21_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA21_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x68): undefined reference to `YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder> const&)'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA21_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA21_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xed): undefined reference to `YAML::BadSubscript::~BadSubscript()'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA21_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA21_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xf4): undefined reference to `typeinfo for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::memory_holder::create_node()':
/usr/include/yaml-cpp/node/detail/memory.h:38:(.text._ZN4YAML6detail9node_data3getIA21_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA21_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x140): undefined reference to `YAML::detail::memory::create_node()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [21]>(char const (&) [21], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:170:(.text._ZN4YAML6detail9node_data3getIA21_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA21_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x151): undefined reference to `YAML::detail::node_data::insert_map_pair(YAML::detail::node&, YAML::detail::node&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [6]>(char const (&) [6], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:154:(.text._ZN4YAML6detail9node_data3getIA6_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA6_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x68): undefined reference to `YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder> const&)'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA6_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA6_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xed): undefined reference to `YAML::BadSubscript::~BadSubscript()'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA6_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA6_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xf4): undefined reference to `typeinfo for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::memory_holder::create_node()':
/usr/include/yaml-cpp/node/detail/memory.h:38:(.text._ZN4YAML6detail9node_data3getIA6_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA6_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x140): undefined reference to `YAML::detail::memory::create_node()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [6]>(char const (&) [6], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:170:(.text._ZN4YAML6detail9node_data3getIA6_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA6_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x151): undefined reference to `YAML::detail::node_data::insert_map_pair(YAML::detail::node&, YAML::detail::node&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [11]>(char const (&) [11], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:154:(.text._ZN4YAML6detail9node_data3getIA11_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA11_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x68): undefined reference to `YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder> const&)'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA11_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA11_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xed): undefined reference to `YAML::BadSubscript::~BadSubscript()'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA11_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA11_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xf4): undefined reference to `typeinfo for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::memory_holder::create_node()':
/usr/include/yaml-cpp/node/detail/memory.h:38:(.text._ZN4YAML6detail9node_data3getIA11_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA11_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x140): undefined reference to `YAML::detail::memory::create_node()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [11]>(char const (&) [11], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:170:(.text._ZN4YAML6detail9node_data3getIA11_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA11_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x151): undefined reference to `YAML::detail::node_data::insert_map_pair(YAML::detail::node&, YAML::detail::node&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [17]>(char const (&) [17], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:154:(.text._ZN4YAML6detail9node_data3getIA17_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA17_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x68): undefined reference to `YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder> const&)'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA17_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA17_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xed): undefined reference to `YAML::BadSubscript::~BadSubscript()'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA17_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA17_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xf4): undefined reference to `typeinfo for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::memory_holder::create_node()':
/usr/include/yaml-cpp/node/detail/memory.h:38:(.text._ZN4YAML6detail9node_data3getIA17_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA17_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x140): undefined reference to `YAML::detail::memory::create_node()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [17]>(char const (&) [17], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:170:(.text._ZN4YAML6detail9node_data3getIA17_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA17_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x151): undefined reference to `YAML::detail::node_data::insert_map_pair(YAML::detail::node&, YAML::detail::node&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [10]>(char const (&) [10], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:154:(.text._ZN4YAML6detail9node_data3getIA10_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA10_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x68): undefined reference to `YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder> const&)'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA10_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA10_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xed): undefined reference to `YAML::BadSubscript::~BadSubscript()'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA10_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA10_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xf4): undefined reference to `typeinfo for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::memory_holder::create_node()':
/usr/include/yaml-cpp/node/detail/memory.h:38:(.text._ZN4YAML6detail9node_data3getIA10_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA10_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x140): undefined reference to `YAML::detail::memory::create_node()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [10]>(char const (&) [10], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:170:(.text._ZN4YAML6detail9node_data3getIA10_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA10_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x151): undefined reference to `YAML::detail::node_data::insert_map_pair(YAML::detail::node&, YAML::detail::node&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [7]>(char const (&) [7], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:154:(.text._ZN4YAML6detail9node_data3getIA7_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA7_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x68): undefined reference to `YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder> const&)'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA7_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA7_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xed): undefined reference to `YAML::BadSubscript::~BadSubscript()'
/usr/bin/ld: /usr/include/yaml-cpp/node/detail/impl.h:157:(.text._ZN4YAML6detail9node_data3getIA7_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA7_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0xf4): undefined reference to `typeinfo for YAML::BadSubscript'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::memory_holder::create_node()':
/usr/include/yaml-cpp/node/detail/memory.h:38:(.text._ZN4YAML6detail9node_data3getIA7_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA7_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x140): undefined reference to `YAML::detail::memory::create_node()'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `YAML::detail::node& YAML::detail::node_data::get<char [7]>(char const (&) [7], std::shared_ptr<YAML::detail::memory_holder>)':
/usr/include/yaml-cpp/node/detail/impl.h:170:(.text._ZN4YAML6detail9node_data3getIA7_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getIA7_cEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x151): undefined reference to `YAML::detail::node_data::insert_map_pair(YAML::detail::node&, YAML::detail::node&)'
/usr/bin/ld: /tmp/ccF55MEJ.o: in function `std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > YAML::Node::as<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >() const':
/usr/include/yaml-cpp/node/impl.h:155:(.text._ZNK4YAML4Node2asISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EEEET_v[_ZNK4YAML4Node2asISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EEEET_v]+0x7c): undefined reference to `YAML::InvalidNode::~InvalidNode()'
/usr/bin/ld: /usr/include/yaml-cpp/node/impl.h:155:(.text._ZNK4YAML4Node2asISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EEEET_v[_ZNK4YAML4Node2asISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EEEET_v]+0x83): undefined reference to `typeinfo for YAML::InvalidNode'
/usr/bin/ld: /tmp/ccF55MEJ.o:(.data.rel.ro._ZTIN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE[_ZTIN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE]+0x10): undefined reference to `typeinfo for YAML::BadConversion'
/usr/bin/ld: /tmp/ccF55MEJ.o:(.data.rel.ro._ZTIN4YAML18TypedBadConversionIiEE[_ZTIN4YAML18TypedBadConversionIiEE]+0x10): undefined reference to `typeinfo for YAML::BadConversion'
/usr/bin/ld: /tmp/ccF55MEJ.o:(.data.rel.ro._ZTIN4YAML18TypedBadConversionIdEE[_ZTIN4YAML18TypedBadConversionIdEE]+0x10): undefined reference to `typeinfo for YAML::BadConversion'
/usr/bin/ld: /tmp/ccF55MEJ.o:(.data.rel.ro._ZTIN4YAML18TypedBadConversionISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEE[_ZTIN4YAML18TypedBadConversionISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEE]+0x10): undefined reference to `typeinfo for YAML::BadConversion'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:34: /home/hagemann/Software/COSItools/megalib/bin/StripEnergyThresholdFinder] Error 1
make[1]: *** [Makefile:135: apps] Error 2
make: *** [Makefile:126: all] Error 2
Adds a standalone application, StripEnergyThresholdFinder, for computing per-strip slow and fast energy thresholds. Slow thresholds are determined from ADC spectra using a noise peak and trough method, while fast thresholds are determined from dt0/dt1 timing crossover. The tool reads calibrated HDF5 data via MModuleLoaderMeasurementsHDF, applies strip mapping and energy calibration from a YAML configuration, and produces ROOT diagnostic outputs (energy spectra with thresholds, dt0 vs dt1 per strip, and threshold distributions) along with CSV export files. The implementation is self-contained under apps/ and does not modify existing modules. Tested on COSI datasets with consistent threshold behavior and expected diagnostic results. Target branch is develop/em.