#include "hrichcalsim.h"
#include "TBuffer.h"
ClassImp(HRichCalSim)
HRichCalSim::HRichCalSim():
HRichCal(),
fNofTracks(0),
fEnergy(0),
fCt(0)
{
initTrackIds();
}
HRichCalSim::HRichCalSim(Float_t ch) :
HRichCal(ch),
fNofTracks(0),
fEnergy(0),
fCt(0)
{
initTrackIds();
}
HRichCalSim::HRichCalSim(Int_t s, Int_t r, Int_t c):
HRichCal(s, c, r),
fNofTracks(0),
fEnergy(0),
fCt(0)
{
initTrackIds();
}
void HRichCalSim::initTrackIds()
{
for (Int_t i = 0; i < NMAXTRACKS; i++) {
fTrackIds[i] = -1;
}
}
Bool_t HRichCalSim::checkTrackId(Int_t trackId)
{
for (Int_t i = 0; i < fNofTracks; i++) {
if (fTrackIds[i] == trackId) return kTRUE;
}
return kFALSE;
}
void HRichCalSim::addTrackId(Int_t trackId)
{
for (Int_t i = 0; i < fNofTracks; i++) {
if (fTrackIds[i] == trackId) return;
}
if (fNofTracks >= NMAXTRACKS) return;
fTrackIds[fNofTracks] = trackId;
fNofTracks++;
}
Int_t HRichCalSim::getTrackId(Int_t index)
{
if (index >= fNofTracks || index < 0 ) return -1;
return fTrackIds[index];
}
void HRichCalSim::Streamer(TBuffer &R__b)
{
UInt_t R__s, R__c;
if (R__b.IsReading()) {
Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
HRichCal::Streamer(R__b);
if(R__v > 1){
R__b.ReadStaticArray((int*)fTrackIds);
R__b >> fNofTracks;
} else {
initTrackIds() ;
fNofTracks = 0;
}
if(R__v == 1){
Int_t fTrack1;
Int_t fTrack2;
R__b >> fTrack1;
R__b >> fTrack2;
fTrackIds[0] = fTrack1;
fTrackIds[1] = fTrack2;
fNofTracks = 2;
}
R__b >> fEnergy;
R__b.CheckByteCount(R__s, R__c, HRichCalSim::IsA());
} else {
R__c = R__b.WriteVersion(HRichCalSim::IsA(), kTRUE);
HRichCal::Streamer(R__b);
R__b.WriteArray(fTrackIds, NMAXTRACKS);
R__b << fNofTracks;
R__b << fEnergy;
R__b.SetByteCount(R__c, kTRUE);
}
}