/******************************************************************************** * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * * * * This software is distributed under the terms of the * * GNU Lesser General Public Licence version 3 (LGPL) version 3, * * copied verbatim in the file "LICENSE" * ********************************************************************************/ /** * PndBurstVectorBuilder.h * * @since 2012-12-06 * @author D. Klein, A. Rybalchenko */ #ifndef PndBurstVectorBuilder_H_ #define PndBurstVectorBuilder_H_ #include "FairTimeStamp.h" #include "PndBurstContainer.h" #include "TClonesArray.h" #include #include #include #include using namespace std; class PndBurstVectorBuilderBase { public : PndBurstVectorBuilderBase() //: fThreshold(2E3), fOffset(2E3), fHasBoostSerialization(false), fCurrentThreshold(fThreshold), fCurrentOffset(fOffset + fThreshold) {} virtual ~PndBurstVectorBuilderBase() {} virtual std::vector< std::vector > ProcessData(TClonesArray* data) = 0; virtual std::vector< std::vector > GetLastData() = 0; // virtual void SetThreshold(double val){ fThreshold = val;} // virtual void SetOffset(double val){ fOffset = val;} // // virtual double GetThreshold(){return fThreshold;} // virtual double GetOffset(){return fOffset;} virtual int GetBurstId (FairTimeStamp* data){ int result = data->GetTimeStamp() / fBurstContainer.GetThreshold(); return result; } // template // void serialize(Archive& ar, const unsigned int version) // { // ar& fData; //// ar& fCurrentOutput; //// ar& fNextOutputs; // } protected: // double fThreshold; // double fOffset; // double fCurrentThreshold; // double fCurrentOffset; // #ifndef __CINT__ // for BOOST serialization // friend class boost::serialization::access; // bool fHasBoostSerialization; // #endif // for BOOST serialization std::vector fData; // std::vector fCurrentOutput; // std::vector > fNextOutputs; PndBurstContainer fBurstContainer; }; template class PndBurstVectorBuilderT : public PndBurstVectorBuilderBase { public: PndBurstVectorBuilderT() : PndBurstVectorBuilderBase() {} virtual ~PndBurstVectorBuilderT() {} std::vector< std::vector > ProcessData(TClonesArray* data); std::vector< std::vector > GetLastData(); }; #include "PndBurstVectorBuilder.tpl" #endif /* PndBurstVectorBuilder_H_ */