Skip to content
Snippets Groups Projects
Commit 319ffc7d authored by Pierre-Alain Loizeau's avatar Pierre-Alain Loizeau
Browse files

[MQ] slightly improve DigiEventSink by copying blocks of digis instead of looping through indices

- Add optional method to resort indicices to the CbmEvent class, as the indices for TRD1D and 2D are added in separate steps
- Replace the loop over the CbmEvent indices by a block copy between the first and last digi of each detector type, based
  on the assumption that we use a time-window based selection on a sorted array, therfore leading to a continuous block
  => this is known to potentially copy more digis in the TRD case due to the eventual =/= windows and offsets for 1D and 2D
parent d7616743
No related branches found
No related tags found
1 merge request!813Changes to MQ online unpacking and event sel. for mCBM 03/2022 runs
...@@ -270,7 +270,8 @@ bool CbmDeviceDigiEventSink::HandleData(FairMQParts& parts, int /*index*/) ...@@ -270,7 +270,8 @@ bool CbmDeviceDigiEventSink::HandleData(FairMQParts& parts, int /*index*/)
CbmEventTimeslice unpTs(parts); CbmEventTimeslice unpTs(parts);
/// FIXME: Need to check if TS arrived in order (probably not!!!) + buffer!!! /// FIXME: Need to check if TS arrived in order (probably not!!!) + buffer!!!
LOG(debug) << "Next TS check " << fuPrevTsIndex << " " << fulTsCounter << " " << unpTs.fTsMetaData.GetIndex(); LOG(info) << "Next TS check " << fuPrevTsIndex << " " << fulTsCounter << " " << unpTs.fTsMetaData.GetIndex()
<< " Sorage size: " << fmFullTsStorage.size();
if (fuPrevTsIndex + 1 == unpTs.fTsMetaData.GetIndex() if (fuPrevTsIndex + 1 == unpTs.fTsMetaData.GetIndex()
|| (0 == fuPrevTsIndex && 0 == fulTsCounter && 0 == unpTs.fTsMetaData.GetIndex())) { || (0 == fuPrevTsIndex && 0 == fulTsCounter && 0 == unpTs.fTsMetaData.GetIndex())) {
LOG(debug) << "TS direct to dump"; LOG(debug) << "TS direct to dump";
...@@ -764,62 +765,185 @@ std::vector<CbmDigiEvent> CbmEventTimeslice::GetSelectedData() ...@@ -764,62 +765,185 @@ std::vector<CbmDigiEvent> CbmEventTimeslice::GetSelectedData()
selEvent.fTime = event.GetStartTime(); selEvent.fTime = event.GetStartTime();
selEvent.fNumber = event.GetNumber(); selEvent.fNumber = event.GetNumber();
/// FIXME: for pure digi based event, we select "continuous slices of digis"
/// => Copy block of [First Digi index, last digi index] with assign(it_start, it_stop)
/// FIXME: Keep TRD1D + TRD2D support, may lead to holes in the digi sequence!
/// => Would need to keep the loop
/// Get the proper order for block selection as TRD1D and TRD2D may insert indices in separate loops
/// => Needed to ensure that the start and stop of the block copy do not trigger a vector size exception
event.SortIndices();
/// for each detector, find the data in the Digi vectors and copy them /// for each detector, find the data in the Digi vectors and copy them
/// TODO: Template + loop on list of data types? /// TODO: Template + loop on list of data types?
/// ==> T0 /// ==> T0
uint32_t uNbDigis = (0 < event.GetNofData(ECbmDataType::kT0Digi) ? event.GetNofData(ECbmDataType::kT0Digi) : 0); uint32_t uNbDigis = (0 < event.GetNofData(ECbmDataType::kT0Digi) ? event.GetNofData(ECbmDataType::kT0Digi) : 0);
if (uNbDigis) { if (uNbDigis) {
for (uint32_t uDigiIdx = 0; uDigiIdx < uNbDigis; ++uDigiIdx) { auto startIt = fvDigiT0.begin() + event.GetIndex(ECbmDataType::kT0Digi, 0);
selEvent.fData.fT0.fDigis.push_back(fvDigiT0[event.GetIndex(ECbmDataType::kT0Digi, uDigiIdx)]); auto stopIt = fvDigiT0.begin() + event.GetIndex(ECbmDataType::kT0Digi, uNbDigis - 1);
selEvent.fData.fT0.fDigis.assign(startIt, stopIt);
/*
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kT0Digi, 0);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fT0.fDigis.push_back(fvDigiT0[event.GetIndex(ECbmDataType::kT0Digi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kT0Digi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kT0Digi, uDigiIdx) - (uPrevIdx + 1);
}
uPrevIdx = event.GetIndex(ECbmDataType::kT0Digi, uDigiIdx);
}
if (0 < uNbExtra) {
LOG(info) << "In event " << event.GetNumber() << " the T0 block selection added " << uNbExtra
<< " extra digis compared to the loop one";
} }
*/
} }
/// ==> STS /// ==> STS
uNbDigis = (0 < event.GetNofData(ECbmDataType::kStsDigi) ? event.GetNofData(ECbmDataType::kStsDigi) : 0); uNbDigis = (0 < event.GetNofData(ECbmDataType::kStsDigi) ? event.GetNofData(ECbmDataType::kStsDigi) : 0);
if (uNbDigis) { if (uNbDigis) {
for (uint32_t uDigiIdx = 0; uDigiIdx < uNbDigis; ++uDigiIdx) { auto startIt = fvDigiSts.begin() + event.GetIndex(ECbmDataType::kStsDigi, 0);
selEvent.fData.fSts.fDigis.push_back(fvDigiSts[event.GetIndex(ECbmDataType::kStsDigi, uDigiIdx)]); auto stopIt = fvDigiSts.begin() + event.GetIndex(ECbmDataType::kStsDigi, uNbDigis - 1);
selEvent.fData.fSts.fDigis.assign(startIt, stopIt);
/*
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kStsDigi, 0);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fSts.fDigis.push_back(fvDigiSts[event.GetIndex(ECbmDataType::kStsDigi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kStsDigi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kStsDigi, uDigiIdx) - (uPrevIdx + 1);
}
uPrevIdx = event.GetIndex(ECbmDataType::kStsDigi, uDigiIdx);
} }
if (0 < uNbExtra) {
LOG(info) << "In event " << event.GetNumber() << " the STS block selection added " << uNbExtra
<< " extra digis compared to the loop one";
}
*/
} }
/// ==> MUCH /// ==> MUCH
uNbDigis = (0 < event.GetNofData(ECbmDataType::kMuchDigi) ? event.GetNofData(ECbmDataType::kMuchDigi) : 0); uNbDigis = (0 < event.GetNofData(ECbmDataType::kMuchDigi) ? event.GetNofData(ECbmDataType::kMuchDigi) : 0);
if (uNbDigis) { if (uNbDigis) {
for (uint32_t uDigiIdx = 0; uDigiIdx < uNbDigis; ++uDigiIdx) { auto startIt = fvDigiMuch.begin() + event.GetIndex(ECbmDataType::kMuchDigi, 0);
selEvent.fData.fMuch.fDigis.push_back(fvDigiMuch[event.GetIndex(ECbmDataType::kMuchDigi, uDigiIdx)]); auto stopIt = fvDigiMuch.begin() + event.GetIndex(ECbmDataType::kMuchDigi, uNbDigis - 1);
selEvent.fData.fMuch.fDigis.assign(startIt, stopIt);
/*
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kMuchDigi, 0);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fMuch.fDigis.push_back(fvDigiMuch[event.GetIndex(ECbmDataType::kMuchDigi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kMuchDigi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kMuchDigi, uDigiIdx) - (uPrevIdx + 1);
}
uPrevIdx = event.GetIndex(ECbmDataType::kMuchDigi, uDigiIdx);
}
if (0 < uNbExtra) {
LOG(info) << "In event " << event.GetNumber() << " the MUCH block selection added " << uNbExtra
<< " extra digis compared to the loop one";
} }
*/
} }
/// ==> TRD /// ==> TRD + TRD2D
uNbDigis = (0 < event.GetNofData(ECbmDataType::kTrdDigi) ? event.GetNofData(ECbmDataType::kTrdDigi) : 0); uNbDigis = (0 < event.GetNofData(ECbmDataType::kTrdDigi) ? event.GetNofData(ECbmDataType::kTrdDigi) : 0);
if (uNbDigis) { if (uNbDigis) {
for (uint32_t uDigiIdx = 0; uDigiIdx < uNbDigis; ++uDigiIdx) { auto startIt = fvDigiTrd.begin() + event.GetIndex(ECbmDataType::kTrdDigi, 0);
selEvent.fData.fTrd.fDigis.push_back(fvDigiTrd[event.GetIndex(ECbmDataType::kTrdDigi, uDigiIdx)]); auto stopIt = fvDigiTrd.begin() + event.GetIndex(ECbmDataType::kTrdDigi, uNbDigis - 1);
selEvent.fData.fTrd.fDigis.assign(startIt, stopIt);
/*
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kTrdDigi, 0);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fTrd.fDigis.push_back(fvDigiTrd[event.GetIndex(ECbmDataType::kTrdDigi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kTrdDigi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kTrdDigi, uDigiIdx) - (uPrevIdx + 1);
LOG(info) << "Extra TRD digi: prev is " << uPrevIdx << " vs new " << event.GetIndex(ECbmDataType::kTrdDigi, uDigiIdx)
<< " index " << uDigiIdx << " out of " << uNbDigis;
}
uPrevIdx = event.GetIndex(ECbmDataType::kTrdDigi, uDigiIdx);
} }
if (0 < uNbExtra) {
LOG(info) << "In event " << event.GetNumber() << " the TRD block selection added " << uNbExtra
<< " extra digis compared to the loop one";
}
*/
} }
/// ==> TOF /// ==> TOF
uNbDigis = (0 < event.GetNofData(ECbmDataType::kTofDigi) ? event.GetNofData(ECbmDataType::kTofDigi) : 0); uNbDigis = (0 < event.GetNofData(ECbmDataType::kTofDigi) ? event.GetNofData(ECbmDataType::kTofDigi) : 0);
if (uNbDigis) { if (uNbDigis) {
for (uint32_t uDigiIdx = 0; uDigiIdx < uNbDigis; ++uDigiIdx) { auto startIt = fvDigiTof.begin() + event.GetIndex(ECbmDataType::kTofDigi, 0);
selEvent.fData.fTof.fDigis.push_back(fvDigiTof[event.GetIndex(ECbmDataType::kTofDigi, uDigiIdx)]); auto stopIt = fvDigiTof.begin() + event.GetIndex(ECbmDataType::kTofDigi, uNbDigis - 1);
selEvent.fData.fTof.fDigis.assign(startIt, stopIt);
/*
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kTofDigi, 0);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fTof.fDigis.push_back(fvDigiTof[event.GetIndex(ECbmDataType::kTofDigi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kTofDigi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kTofDigi, uDigiIdx) - (uPrevIdx + 1);
}
uPrevIdx = event.GetIndex(ECbmDataType::kTofDigi, uDigiIdx);
}
if (0 < uNbExtra) {
LOG(info) << "In event " << event.GetNumber() << " the TOF block selection added " << uNbExtra
<< " extra digis compared to the loop one";
} }
*/
} }
/// ==> RICH /// ==> RICH
uNbDigis = (0 < event.GetNofData(ECbmDataType::kRichDigi) ? event.GetNofData(ECbmDataType::kRichDigi) : 0); uNbDigis = (0 < event.GetNofData(ECbmDataType::kRichDigi) ? event.GetNofData(ECbmDataType::kRichDigi) : 0);
if (uNbDigis) { if (uNbDigis) {
for (uint32_t uDigiIdx = 0; uDigiIdx < uNbDigis; ++uDigiIdx) { auto startIt = fvDigiRich.begin() + event.GetIndex(ECbmDataType::kRichDigi, 0);
selEvent.fData.fRich.fDigis.push_back(fvDigiRich[event.GetIndex(ECbmDataType::kRichDigi, uDigiIdx)]); auto stopIt = fvDigiRich.begin() + event.GetIndex(ECbmDataType::kRichDigi, uNbDigis - 1);
selEvent.fData.fRich.fDigis.assign(startIt, stopIt);
/*
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kRichDigi, 0);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fRich.fDigis.push_back(fvDigiRich[event.GetIndex(ECbmDataType::kRichDigi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kRichDigi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kRichDigi, uDigiIdx) - (uPrevIdx + 1);
}
uPrevIdx = event.GetIndex(ECbmDataType::kRichDigi, uDigiIdx);
} }
if (0 < uNbExtra) {
LOG(info) << "In event " << event.GetNumber() << " the RICH block selection added " << uNbExtra
<< " extra digis compared to the loop one";
}
*/
} }
/// ==> PSD /// ==> PSD
uNbDigis = (0 < event.GetNofData(ECbmDataType::kPsdDigi) ? event.GetNofData(ECbmDataType::kPsdDigi) : 0); uNbDigis = (0 < event.GetNofData(ECbmDataType::kPsdDigi) ? event.GetNofData(ECbmDataType::kPsdDigi) : 0);
if (uNbDigis) { if (uNbDigis) {
for (uint32_t uDigiIdx = 0; uDigiIdx < uNbDigis; ++uDigiIdx) { auto startIt = fvDigiPsd.begin() + event.GetIndex(ECbmDataType::kPsdDigi, 0);
selEvent.fData.fPsd.fDigis.push_back(fvDigiPsd[event.GetIndex(ECbmDataType::kPsdDigi, uDigiIdx)]); auto stopIt = fvDigiPsd.begin() + event.GetIndex(ECbmDataType::kPsdDigi, uNbDigis - 1);
selEvent.fData.fPsd.fDigis.assign(startIt, stopIt);
/*
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kPsdDigi, 0);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fPsd.fDigis.push_back(fvDigiPsd[event.GetIndex(ECbmDataType::kPsdDigi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kPsdDigi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kPsdDigi, uDigiIdx) - (uPrevIdx + 1);
}
uPrevIdx = event.GetIndex(ECbmDataType::kPsdDigi, uDigiIdx);
}
if (0 < uNbExtra) {
LOG(info) << "In event " << event.GetNumber() << " the PSD block selection added " << uNbExtra
<< " extra digis compared to the loop one";
} }
*/
} }
vEventsSel.push_back(selEvent); vEventsSel.push_back(selEvent);
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
**/ **/
#include "CbmEvent.h" #include "CbmEvent.h"
#include <algorithm> // for std::sort
#include <iostream> // for operator<<, basic_ostream #include <iostream> // for operator<<, basic_ostream
#include <sstream> // for stringstream #include <sstream> // for stringstream
#include <string> // for char_traits #include <string> // for char_traits
...@@ -95,5 +96,13 @@ std::string CbmEvent::ToString() const ...@@ -95,5 +96,13 @@ std::string CbmEvent::ToString() const
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void CbmEvent::SortIndices()
{
for (auto it = fIndexMap.begin(); it != fIndexMap.end(); it++) {
std::sort(it->second.begin(), it->second.end());
}
}
// -------------------------------------------------------------------------
ClassImp(CbmEvent) ClassImp(CbmEvent)
...@@ -38,10 +38,10 @@ public: ...@@ -38,10 +38,10 @@ public:
CbmEvent() : CbmEvent(-1, 0., 0.) {}; CbmEvent() : CbmEvent(-1, 0., 0.) {};
/** Constructor with event number and time /** Constructor with event number and time
** @param[in] number Event number ** @param[in] number Event number
** @param[in] startTime Event start time [ns] ** @param[in] startTime Event start time [ns]
** @param[in] endTime Event start time [ns] ** @param[in] endTime Event start time [ns]
**/ **/
CbmEvent(int32_t number, double startTime = 0., double endTime = 0.) CbmEvent(int32_t number, double startTime = 0., double endTime = 0.)
: TObject() : TObject()
, fNumber(number) , fNumber(number)
...@@ -69,29 +69,29 @@ public: ...@@ -69,29 +69,29 @@ public:
/** Add a data object to the index map /** Add a data object to the index map
** @param DataType Type of data (for values see CbmDetectorList.h) ** @param DataType Type of data (for values see CbmDetectorList.h)
** @param Index Index of the data object in its TClonesArray ** @param Index Index of the data object in its TClonesArray
*/ */
void AddData(ECbmDataType type, uint32_t index); void AddData(ECbmDataType type, uint32_t index);
/** Add an STS track to the event /** Add an STS track to the event
** @param Index of STS track in its TClonesArray ** @param Index of STS track in its TClonesArray
**/ **/
void AddStsTrack(uint32_t index) { AddData(ECbmDataType::kStsTrack, index); } void AddStsTrack(uint32_t index) { AddData(ECbmDataType::kStsTrack, index); }
/** Get the index of a data object in its TClonesArray /** Get the index of a data object in its TClonesArray
** @param DataType Type of data (for values see CbmDetectorList.h) ** @param DataType Type of data (for values see CbmDetectorList.h)
** @param iData Running number of data object in event ** @param iData Running number of data object in event
** @value Index of data object in its TClonesArray ** @value Index of data object in its TClonesArray
**/ **/
uint32_t GetIndex(ECbmDataType type, uint32_t iData); uint32_t GetIndex(ECbmDataType type, uint32_t iData);
/** Get match object /** Get match object
** @value Pointer to match object ** @value Pointer to match object
**/ **/
CbmMatch* GetMatch() const { return fMatch; } CbmMatch* GetMatch() const { return fMatch; }
...@@ -100,71 +100,71 @@ public: ...@@ -100,71 +100,71 @@ public:
/** Get number of data objects of a given type in this event /** Get number of data objects of a given type in this event
** @param DataType Type of data (for values see CbmDetectorList.h) ** @param DataType Type of data (for values see CbmDetectorList.h)
** @value Number of objects of type DataType in the event. ** @value Number of objects of type DataType in the event.
** -1 is data type is not registered. ** -1 is data type is not registered.
**/ **/
int32_t GetNofData(ECbmDataType type) const; int32_t GetNofData(ECbmDataType type) const;
/** Get number of STS tracks /** Get number of STS tracks
** @value Number of STS tracks in the event. -1 if not registered. ** @value Number of STS tracks in the event. -1 if not registered.
**/ **/
int32_t GetNofStsTracks() const { return GetNofData(ECbmDataType::kStsTrack); } int32_t GetNofStsTracks() const { return GetNofData(ECbmDataType::kStsTrack); }
/** Get event number /** Get event number
** @value Event number ** @value Event number
**/ **/
int32_t GetNumber() const { return fNumber; } int32_t GetNumber() const { return fNumber; }
/** Get STS track index /** Get STS track index
** @param iTrack Running number of STS track in the event ** @param iTrack Running number of STS track in the event
** @value index Index of STS track in TClonesArray ** @value index Index of STS track in TClonesArray
**/ **/
int32_t GetStsTrackIndex(int32_t iTrack) { return GetIndex(ECbmDataType::kStsTrack, iTrack); } int32_t GetStsTrackIndex(int32_t iTrack) { return GetIndex(ECbmDataType::kStsTrack, iTrack); }
/** Get event end time /** Get event end time
** @value End time of event [ns] ** @value End time of event [ns]
**/ **/
double GetEndTime() const { return fTimeEnd; } double GetEndTime() const { return fTimeEnd; }
/** Get event start time /** Get event start time
** @value Start time of event [ns] ** @value Start time of event [ns]
**/ **/
double GetStartTime() const { return fTimeStart; } double GetStartTime() const { return fTimeStart; }
/** Set event number /** Set event number
** @value Event number ** @value Event number
**/ **/
void SetNumber(int32_t number) { fNumber = number; } void SetNumber(int32_t number) { fNumber = number; }
/** Set end time /** Set end time
** @param endTime End time of event [ns] ** @param endTime End time of event [ns]
**/ **/
void SetEndTime(double endTime) { fTimeEnd = endTime; } void SetEndTime(double endTime) { fTimeEnd = endTime; }
/** Set a match object /** Set a match object
** @param match Pointer to a match object ** @param match Pointer to a match object
**/ **/
void SetMatch(CbmMatch* match) { fMatch = match; } void SetMatch(CbmMatch* match) { fMatch = match; }
/** Set start time /** Set start time
** @param endTime Start time of event [ns] ** @param endTime Start time of event [ns]
**/ **/
void SetStartTime(double startTime) { fTimeStart = startTime; } void SetStartTime(double startTime) { fTimeStart = startTime; }
/** Set the STS track index array /** Set the STS track index array
** @brief Sets the index array for STS tracks. ** @brief Sets the index array for STS tracks.
** Old content will be overwritten. ** Old content will be overwritten.
** @param indexVector Vector with indices of STS tracks ** @param indexVector Vector with indices of STS tracks
**/ **/
void SetStsTracks(std::vector<uint32_t>& indexVector) void SetStsTracks(std::vector<uint32_t>& indexVector)
{ {
fNofData -= fIndexMap[ECbmDataType::kStsTrack].size(); fNofData -= fIndexMap[ECbmDataType::kStsTrack].size();
...@@ -174,24 +174,29 @@ public: ...@@ -174,24 +174,29 @@ public:
/** Set the event vertex variables /** Set the event vertex variables
*@param x x coordinate [cm] ** @param x x coordinate [cm]
*@param y y coordinate [cm] ** @param y y coordinate [cm]
*@param z z coordinate [cm] ** @param z z coordinate [cm]
*@param chi2 chi square of vertex fit ** @param chi2 chi square of vertex fit
*@param ndf Number of degrees of freedom of vertex fit ** @param ndf Number of degrees of freedom of vertex fit
*@param nTracks Number of tracks used for vertex fit ** @param nTracks Number of tracks used for vertex fit
*@param covMat Covariance Matrix (symmetric, 3x3) ** @param covMat Covariance Matrix (symmetric, 3x3)
**/ **/
void SetVertex(double x, double y, double z, double chi2, int32_t ndf, int32_t nTracks, const TMatrixFSym& covMat); void SetVertex(double x, double y, double z, double chi2, int32_t ndf, int32_t nTracks, const TMatrixFSym& covMat);
/** Sort the indices from smallest to biffest for each data type
**/
void SortIndices();
/** String output **/ /** String output **/
std::string ToString() const; std::string ToString() const;
/** Get event vertex /** Get event vertex
** @value Pointer to vertex object ** @value Pointer to vertex object
**/ **/
CbmVertex* GetVertex() { return &fVertex; } CbmVertex* GetVertex() { return &fVertex; }
/** Swap two events **/ /** Swap two events **/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment