/* * PndLmdDataReader.h * * Created on: Aug 24, 2013 * Author: steve */ #ifndef PNDLMDDATAREADER_H_ #define PNDLMDDATAREADER_H_ #include "LumiFitStructs.h" #include #include "TString.h" #include "TLorentzVector.h" class PndLmdAbstractData; class PndLmdHistogramData; class PndLmdVertexData; class PndLmdAngularData; class PndLmdAcceptance; class PndLmdResolution; class TDatabasePDG; class PndLmdTrackQ; class TClonesArray; class PndLmdDataReader { private: std::vector registered_data; std::vector registered_acceptances; std::vector registered_resolutions; void clearRegisters(); std::vector combineAllRegisteredDataObjects(); void removeFinished(std::vector &lmd_vec, int num_events); int getNextMinEventIndex(std::vector &lmd_vec); double getTrackParameterValue(PndLmdTrackQ *track_pars, const LumiFit::LmdDimension &lmd_dim) const; double getTrackParameterDifference(PndLmdTrackQ *track_pars, LumiFit::LmdDimension lmd_dim) const; bool skipDataObject(const PndLmdAbstractData* data, bool reconstruced) const; void fillData(PndLmdTrackQ *track_pars); void cleanup(); virtual unsigned int getEntries() const =0; virtual void initDataStream() =0; virtual void clearDataStream() =0; virtual TClonesArray* getEntry(unsigned int i) =0; TLorentzVector beam; protected: TDatabasePDG *pdg; std::vector file_paths; public: PndLmdDataReader(); virtual ~PndLmdDataReader(); void setBeam(double lab_momentum); void addFilePath(TString file_path); int registerData(PndLmdHistogramData* data); int registerData(std::vector &data_vec); int registerData(std::vector &data_vec); int registerAcceptance(PndLmdAcceptance* acc); int registerAcceptances(std::vector &acc_vec); int registerResolution(PndLmdResolution* res); int registerResolutions(std::vector &res_vec); void read(); }; #endif /* PNDLMDDATAREADER_H_ */