Newer
Older
fGoodTrack = ptrack;
chi2Min = chi2PerDeg;
PruneSelect++;
if (fPruneSelect ==0 && fNtracks>1) fPruneSelect=PruneSelect;
// Set index=0 for fGoodTrack
for (Int_t iitrack = 0; iitrack < fNtracks; iitrack++ ){
THaTrack* aTrack = dynamic_cast<THaTrack*>( fTracks->At(iitrack) );
aTrack->SetIndex(1);
if (iitrack==fGoodTrack) aTrack->SetIndex(0);
}
//
}
//_____________________________________________________________________________
Int_t THcHallCSpectrometer::TrackTimes( TClonesArray* Tracks ) {
// Do the actual track-timing (beta) calculation.
// Use multiple scintillators to average together and get "best" time at S1.
//
// To be useful, a meaningful timing resolution should be assigned
// to each Scintillator object (part of the database).
return 0;
}
Int_t THcHallCSpectrometer::Decode( const THaEvData& evdata )
{
fPresent=kTRUE;
if(eventtypes.size()!=0) {
Int_t evtype = evdata.GetEvType();
if(!IsMyEvent(evtype)) {
fPresent = kFALSE;
}
}
return THaSpectrometer::Decode(evdata);
}
//_____________________________________________________________________________
Int_t THcHallCSpectrometer::ReadRunDatabase( const TDatime& date )
{
// Override THaSpectrometer with nop method. All needed kinamatics
// read in ReadDatabase.
return kOK;
}
void THcHallCSpectrometer::AddEvtType(int evtype) {
eventtypes.push_back(evtype);
}
void THcHallCSpectrometer::SetEvtType(int evtype) {
eventtypes.clear();
AddEvtType(evtype);
}
Bool_t THcHallCSpectrometer::IsMyEvent(Int_t evtype) const
{
for (UInt_t i=0; i < eventtypes.size(); i++) {
if (evtype == eventtypes[i]) return kTRUE;
}
return kFALSE;
}
//_____________________________________________________________________________
ClassImp(THcHallCSpectrometer)