ant
A2 ant: class-based analysis framework
Todo List
Member ant::analysis::HistogramFactory::makeTH1D (const std::string &title, const AxisSettings &x_axis_settings, const std::string &name="", bool sumw2=false) const
think about automagically generating "per binwidth" label from given xbins in x_axis_settings
Member ant::analysis::input::AntReader::ReadNextEvent (event_t &event) override
improve check if TEvent was run through reconstructed you may also introduce some flag to force application?
Member ant::analysis::input::detail::TreeReader::ProvidesSlowControl () const override
the current implementation of reader flags and slow control providers looks non-optimal, improve this...
Member ant::analysis::input::GoatReader::ReadNextEvent (event_t &event) override
think of some better timestamp?
Member ant::analysis::input::GoatReader::treeDetectorHitInput_t::Copy (TEventData &recon)
think about MWPC stuff here, only hits are provided in GoAT tree?!
Member ant::analysis::input::GoatReader::treeTrackInput_t::Copy (TEventData &recon)
how does this work with MWPC?
Member ant::analysis::input::PlutoReader::CopyPluto (TEventData &mctrue)
handle non-prompt hits?
Member ant::analysis::physics::EtapDalitz::ProcessEvent (const TEvent &event, manager_t &manager) override
: still needed here? check final selection via ProtonPhotonCombs
Member ant::analysis::physics::EtapDalitzMC::ProcessEvent (const TEvent &event, manager_t &manager) override
: still needed here? check final selection via ProtonPhotonCombs
Member ant::analysis::physics::McTrue3Pi0::ProcessEvent (const TEvent &event, manager_t &manager) override
this could actually be implemented with ParticleTree_t comparison
Member ant::analysis::physics::TAPS_Energy::ProcessEvent (const TEvent &event, manager_t &manager) override

check for timing hit?

check for trigger pattern?

Member ant::analysis::physics::TAPS_ShortEnergy::ProcessEvent (const TEvent &event, manager_t &manager) override

check for timing hit?

check for trigger pattern?

Member ant::analysis::physics::TAPSVeto_Energy::ProcessEvent (const TEvent &event, manager_t &manager) override

check for timing hit?

check for trigger pattern?

Member ant::analysis::physics::TriggerOverview::CBESum_perCh
Add histograms for Error Codes and ModuleIDs ?
Member ant::analysis::slowcontrol::processor::TaggEff::Get () const
Fix requesting slowcontrols on MC on more general basis
Member ant::analysis::slowcontrol::variable::TaggerScalers::GetNeededProcessors () const override
check how EPT_2012 scalers were recorded for 2014, we know that EPT_Scalers are in Beampolmon VUPROMs
Member ant::analysis::utils::Fitter::Z_Vertex_t::Sigma_before
user might want to change it from fit to fit
Member ant::analysis::utils::KinFitter::BeamE_t::GetLorentzVec () const noexcept
Target is always assumed proton...
Member ant::analysis::utils::NchooseK< T >::at (const size_t i) const
make a move constructor
Member ant::analysis::utils::NoProtonFitter::BeamE_t::GetLorentzVec () const noexcept
Target is always assumed proton...
Member ant::analysis::utils::SigmaFitter::BeamE_t::GetLorentzVec () const noexcept
Target is always assumed proton...
Member ant::analysis::utils::TriggerSimulation::ProcessEvent (const TEvent &event)
The multiplicity is a much harder business, see acqu/root/src/TA2BasePhysics.cc the code there might only apply to the old trigger system before 2012
Member ant::calibration::CB_TimeWalk::TheGUI::DisplayFit () override
make func update when other canvas is edited, clicking on it is enough to redraw function
Member ant::calibration::converter::MultiHitReference< T >::Convert (const std::vector< uint8_t > &rawData) const override
think about hit/refHit overflow here?
Member ant::calibration::energy::GUI_Pedestals::DoFit (const TH1 &hist, unsigned channel) override
implement automatic stop if fit failed?
Member ant::calibration::gui::Manager::Run ()
give module a chance to do something again here???
Member ant::calibration::NewTagger_Time::NewTagger_Time (std::shared_ptr< expconfig::detector::Tagger > tagg, std::shared_ptr< DataManager > calmgr, std::map< expconfig::detector::Tagger::TDCSector_t, Calibration::Converter::ptr_t > converters, double defaultOffset, std::shared_ptr< gui::PeakingFitFunction > fitFunction, const interval< double > &timeWindow)
better check if the given converters actually contain the sector
Member ant::calibration::PID_PhiAngle::TheGUI::FinishSlice () override
what to do if slope is negative?
Member ant::calibration::TAPS_Energy::GUI_Gains::DoFit (const TH1 &hist, unsigned channel) override
the preamble of this method should be merged with CB_Energy::DoFit
Member ant::calibration::TAPS_ShortEnergy::GUI_Gains::DoFit (const TH1 &hist, unsigned channel) override
implement automatic stop if fit failed?
Member ant::calibration::TAPS_ShortEnergy::TAPS_ShortEnergy (const detector_ptr_t &taps, const std::shared_ptr< DataManager > &calmgr, Calibration::Converter::ptr_t converter, defaults_t defaultPedestals={100}, defaults_t defaultGains={0.3}, defaults_t defaultThresholds_Raw={0.0}, defaults_t defaultThresholds_MeV={0.0}, defaults_t defaultRelativeGains={1.0})
Do not provide defaults in ctor, setups should decide
Member ant::calibration::TAPSVeto_Energy::TAPSVeto_Energy (const detector_ptr_t &tapsveto, const std::shared_ptr< DataManager > &calmgr, const Calibration::Converter::ptr_t &converter, double defaultPedestal=100, double defaultGain_BaF2=0.010, double defaultGain_PbWO4=0.050, double defaultThreshold_MeV=0.1, double defaultRelativeGain=1.0)
Do not provide defaults in ctor, setups should decide
Class ant::expconfig::detector::EPT::Element_t
have a look at ugcal?
Member ant::expconfig::detector::PID::GetPhiOffset () const
Change to return values in radian
Member ant::expconfig::detector::PID::RotateRelative (const double offset)
Change offset to be in radian
Member ant::expconfig::detector::PID::SetPhiOffset (double offset_degrees)
Change to use radian
Class ant::expconfig::detector::Tagger::Element_t
have a look at ugcal?
Member ant::expconfig::detector::Tagger::GetPhotonEnergyWidth (unsigned) const override
Find better approximation for tagger here!
Member ant::expconfig::detector::TAPS::BuildMappings (std::vector< hit_mapping_t > &, std::vector< scaler_mapping_t > &) const override
maybe use different switch for BaF2 and PbWO4 sensitive?!
Member ant::expconfig::detector::TAPS::GetRadius () const
check value?
Member ant::expconfig::detector::TAPSVeto::BuildMappings (std::vector< hit_mapping_t > &, std::vector< scaler_mapping_t > &) const override
Provide switch to use sensitive/non-sensitive?
Member ant::expconfig::detector::Trigger::Reference_V1190_TaggerTDC1
Possibly create new trigger struct for the new tagger
Member ant::expconfig::detector::Trigger_2014::BuildMappings (std::vector< hit_mapping_t > &, std::vector< scaler_mapping_t > &) const override
check when those V1190 modules actually were installed and move the emplace_back to base class maybe...
Member ant::expconfig::detector::Trigger_2014::GetL1Pattern () const

once more about the old trigger system is known, those methods could be generalized and/or put into base class (possibly virtual)

since those patterns might be needed in Reconstruct, it might be better NOT to use those methods too much

Member ant::expconfig::detector::Trigger_2014::GetMultiplicityPattern () const
check if this is the right byte-order for the multiplicty pattern
Member ant::expconfig::Setup::BuildMappings (std::vector< hit_mapping_t > &hit_mappings, std::vector< scaler_mapping_t > &scaler_mappings) const override
check that the detectors do not add overlapping mappings
Member ant::expconfig::setup::Setup_2007_Base::Setup_2007_Base (const std::string &name, OptionsPtr opt)
check if 16bit unsigned is correct for all those detectors
Member ant::expconfig::setup::Setup_2010_03_Base::Setup_2010_03_Base (const std::string &name, OptionsPtr opt)
check if 16bit unsigned is correct for all those detectors
Member ant::expconfig::setup::Setup_2012_12_Compton::GetElectronBeamEnergy () const override
put correct beam energy here
Member ant::expconfig::setup::Setup_2012_12_Compton::Setup_2012_12_Compton (const std::string &name, OptionsPtr opt)

refine time range for this setup describing the 2012-12 Compton beamtime?

add more detectors/calibrations here,

Member ant::expconfig::setup::Setup_2014_EPT::Setup_2014_EPT (const std::string &name, OptionsPtr opt)

check if the above statement is actually true, maybe better pi0 analysis could help here?

check if 16bit unsigned is correct for all those detectors

Member ant::expconfig::setup::Setup_2015_01_Pion::Setup_2015_01_Pion (const std::string &name, OptionsPtr opt)
check if 16bit unsigned is correct for all those detectors
Member ant::hstack::hist_operation (const hstack &other, std::function< bool(TH1 *, const TH1 *)> operation)
think of a better way to identify if a ROOT shell is started
Member ant::hstack::hist_t::isDataHist () const
find better way to detect which histograms should NOT be scaled or drawn with error bar in legend. For now, we assume that data is always drawn with error bars.
Member ant::operator<< (ostream &s, const hstack &o)
print current options...?
Member ant::progs::corrections::Corrections::Corrections (const Channel)
Member ant::reconstruct::CandidateBuilder::Catchall (sorted_clusters_t &sorted_clusters, candidates_t &candidates, clusters_t &all_clusters) const

Think about Cherenkov's role more closely, tracker energy looks wrong...

Implement MWPC matching...

Member ant::reconstruct::CandidateBuilder::option_allowSingleVetoClusters
Make this configurable via ant::expconfig.
Member ant::reconstruct::clustering::calc_energy_weight (const double energy, const double total_energy)
use optimal cutoff value
Member ant::Reconstruct::DoReconstruct (TEventData &reconstructed) const override
it would be better if a seperate "simple" candidatebuilder was used here
Member ant::Reconstruct::GetDefaultCandidateBuilder ()
instead of using the full-blown CandidateBuilder here, it would be better to compose it out of smaller parts this might get important if using the MWPCs...
Member ant::Reconstruct::HandleTagger (const std::shared_ptr< TaggerDetector_t > &taggerdetector, const std::vector< std::reference_wrapper< TDetectorReadHit >> &readhits, std::vector< TTaggerHit > &taggerhits) const

handle double hits here?

handle energies here better? (actually test with appropiate QDC run)

Member ant::test::EnsureSetup (bool includeIgnored=false)
check if 16bit signed is correct for all those detectors
Member ant::unpacker::acqu::FileFormatBase::FillSlowControls (const scalers_t &scalers, const scaler_mappings_t &scaler_mappings, std::vector< TSlowControl > &slowcontrols) noexcept
estimate some timestamp from ID_lower here?
Member ant::unpacker::acqu::FileFormatBase::Info::HardwareModule::Identifier
think about module types, such as scaler normal tdc/qdc
Member ant::unpacker::acqu::FileFormatMk1::FillInfo (reader_t &reader, buffer_t &buffer, Info &info) override
ADCs could be checked against hit mappings
Member ant::unpacker::acqu::FileFormatMk1::HandleScalerBuffer (ScalerBlockSizes_t::const_iterator &it_scalerblock, scalers_t &scalers, it_t &it, const it_t &it_end, bool &good, std::vector< TDAQError > &errors) const noexcept
would be better to use header info to make scaler indices more meaningful, for example blocked by module names...
Member ant::unpacker::acqu::FileFormatMk1::UnpackEvent (TEventData &eventdata, it_t &it, const it_t &it_endbuffer, bool &good) noexcept override

Scan mappings if there's an ADC channel defined which mimicks those markers

Implement better handling of malformed event buffers

Implement more fine-grained unpacking error handling

check if this requirement is not too hard for some beam times...

Member ant::unpacker::acqu::FileFormatMk2::FillInfo (reader_t &reader, buffer_t &buffer, Info &info) override
Check for overlapping of raw channels?
Member ant::unpacker::acqu::FileFormatMk2::HandleEPICSBuffer (std::vector< TSlowControl > &slowcontrols, it_t &it, const it_t &it_end, bool &good) const noexcept

Find some way without copying the data?

correct for endian-ness / machine byte ordering?

Member ant::unpacker::acqu::FileFormatMk2::UnpackEvent (TEventData &eventdata, it_t &it, const it_t &it_endbuffer, bool &good) noexcept override

Scan mappings if there's an ADC channel defined which mimicks those blocks

Implement better handling of malformed event buffers

Implement more fine-grained unpacking error handling

Member ant::unpacker::geant::promptrandom_t::make_r_tagg_ch (tagger_t tagger)
check if that channel weighting actually works here
Member ant::unpacker::inspectHeaderMk1Mk2 (const std::vector< uint32_t > &buffer)
Improve the Mk1/Mk2 header checking here
Member ant::UnpackerA2Geant::NextEvent () override

Make PID channel mapping/rotation a Setup option?

check if the short gate actually makes sense?

check if there's really no veto timing?

Member ant::UnpackerA2Geant::OpenFile (const std::string &filename) override
check for multiply defined detectors...
Member ant::UnpackerAcquFileFormat::Get (const std::string &filename)
Check for big-endian/little-endian formatted files?
Member do_calo_veto (const TParticle &p, const ClusterDetector_t &calo, const Detector_t &veto, TParticleList &list)
calculate better vetoE for charged particles? just assume 1 MeV for now...
Member doReference (const WrapTFileInput &input, const WrapTFileInput &mctestinput, const unique_ptr< ofstream > &textout, const std::string &imgdir, vector< string > cutchoice, const interval< int > &taggChRange)
maybe interpolate the sums again? summing them up all time is rather slow, and we also need to copy the fit_results several times, sigh...
Member dotest ()

Check if the bug reported here is fixed and remove exclusion

the ROOT object handling here is baaaad, the test segfaults when some requirements are not met

Member dotest_build ()
Implement building detector hits
Member dotest_runall ()
Check if the bug reported here is fixed and remove exclusion
Member EtapOmegaG_plot::EtapOmegaG_plot (const string &tag, const string &name, const WrapTFileInput &input, OptionsPtr opts)
using a static field is actually quite ugly...
Member main (int argc, char **argv)

support measured proton (use more than one energy bin)

remove hardcoded number of parameters, use stuff from utils/Fitter.h instead?

check if IQR factors are well-chosen

Member ManagerWindowTest::AddCalCanvas (const string &name) override
make those canvases shared_ptr?
Member N_t::fromIntegral (const TH1D &h)
check if binwidth is taken into account correctly
Member ReconstructTester::DoReconstruct (TEventData &reconstructed) const override
Improve requirements