Skip to content
Snippets Groups Projects
Commit 47654018 authored by Mark Jones's avatar Mark Jones Committed by Mark K Jones
Browse files

Modify HallCSpectrometer

    Add variable fPruneSelect which is a flag for which prune
    test selected the good track.

    Put into tree as tr.PruneSelect
    PruneSelect = -1 if no track found
    PruneSelect = 0 if only one track found
    PruneSelect > 0 when more then one track found.

    Method BestTrackUsingPrune goes through the tests in order and
     if a track fails the test then it is flagged as bad and not
     tested in the subsequent tests.
     When only one track is left then fPruneSelect is set to the number of
     the test.


  fPruneSelect = 1  if xptar
  fPruneSelect = 2  if yptar
  fPruneSelect = 3  if ytar
  fPruneSelect = 4  if delta
  fPruneSelect = 5  if track beta
  fPruneSelect = 6  if track reduced degrees of freedom (NHits-4)
  fPruneSelect = 7  if Number of PMT
  fPruneSelect = 8  if track beta chi2
  fPruneSelect = 9  if track focal plane time
  fPruneSelect = 10 if track hit S2Y plane
  fPruneSelect = 11 if track hit S2X plane
  fPruneSelect = 12 if track chisq
parent eca27468
No related branches found
No related tags found
No related merge requests found
......@@ -137,6 +137,7 @@ Int_t THcHallCSpectrometer::DefineVariables( EMode mode )
fIsSetup = ( mode == kDefine );
RVarDef vars[] = {
{ "tr.betachisq", "Chi2 of beta", "fTracks.THaTrack.GetBetaChi2()"},
{ "tr.PruneSelect", "Prune Select ID", "fPruneSelect"},
{ "present", "Trigger Type includes this spectrometer", "fPresent"},
{ 0 }
};
......@@ -280,6 +281,15 @@ Int_t THcHallCSpectrometer::ReadDatabase( const TDatime& date )
// Default values
fSelUsingScin = 0;
fSelUsingPrune = 0;
fPruneXp = .2;
fPruneYp = .2;
fPruneYtar = 20.;
fPruneDelta = 30.;
fPruneBeta = 30.;
fPruneDf= 1;
fPruneChiBeta= 100.;
fPruneNPMT= 6;
fPruneFpTime= 1000.;
fPhi_lab = 0.;
fSatCorr=0.;
fMispointing_x=999.;
......@@ -341,7 +351,7 @@ Int_t THcHallCSpectrometer::ReadDatabase( const TDatime& date )
//
EnforcePruneLimits();
//EnforcePruneLimits();
#ifdef WITH_DEBUG
cout << "\n\n\nhodo planes = " << fNPlanes << endl;
......@@ -480,7 +490,7 @@ Int_t THcHallCSpectrometer::FindVertices( TClonesArray& tracks )
TransportToLab(track->GetP(),track->GetTTheta(),track->GetTPhi(),pvect_temp);
track->SetPvect(pvect_temp);
}
fPruneSelect=-1.;
if (fHodo==0 || (( fSelUsingScin == 0 ) && ( fSelUsingPrune == 0 )) ) {
BestTrackSimple();
} else if (fHodo!=0 && fSelUsingPrune !=0) {
......@@ -774,7 +784,8 @@ Int_t THcHallCSpectrometer::BestTrackUsingPrune()
testTracks[ptrack] = static_cast<THaTrack*>( fTracks->At(ptrack) );
if (!testTracks[ptrack]) return -1;
}
fPruneSelect = 0;
Double_t PruneSelect=0;
// ! Prune on xptar
nGood = 0;
for (Int_t ptrack = 0; ptrack < fNtracks; ptrack++ ){
......@@ -790,7 +801,8 @@ Int_t THcHallCSpectrometer::BestTrackUsingPrune()
}
}
}
PruneSelect++;
if (nGood==1 && fPruneSelect ==0 && fNtracks>1) fPruneSelect=PruneSelect;
// ! Prune on yptar
nGood = 0;
for (Int_t ptrack = 0; ptrack < fNtracks; ptrack++ ){
......@@ -807,6 +819,8 @@ Int_t THcHallCSpectrometer::BestTrackUsingPrune()
}
}
}
PruneSelect++;
if (nGood==1 && fPruneSelect ==0 && fNtracks>1) fPruneSelect=PruneSelect;
// ! Prune on ytar
nGood = 0;
......@@ -823,6 +837,8 @@ Int_t THcHallCSpectrometer::BestTrackUsingPrune()
}
}
}
PruneSelect++;
if (nGood==1 && fPruneSelect ==0 && fNtracks>1) fPruneSelect=PruneSelect;
// ! Prune on delta
nGood = 0;
......@@ -839,6 +855,8 @@ Int_t THcHallCSpectrometer::BestTrackUsingPrune()
}
}
}
PruneSelect++;
if (nGood==1 && fPruneSelect ==0 && fNtracks>1) fPruneSelect=PruneSelect;
// ! Prune on beta
nGood = 0;
......@@ -859,6 +877,8 @@ Int_t THcHallCSpectrometer::BestTrackUsingPrune()
}
}
}
PruneSelect++;
if (nGood==1 && fPruneSelect ==0 && fNtracks>1) fPruneSelect=PruneSelect;
// ! Prune on deg. freedom for track chisq
nGood = 0;
......@@ -876,6 +896,8 @@ Int_t THcHallCSpectrometer::BestTrackUsingPrune()
}
}
PruneSelect++;
if (nGood==1 && fPruneSelect ==0 && fNtracks>1) fPruneSelect=PruneSelect;
//! Prune on num pmt hits
nGood = 0;
for (Int_t ptrack = 0; ptrack < fNtracks; ptrack++ ){
......@@ -891,6 +913,8 @@ Int_t THcHallCSpectrometer::BestTrackUsingPrune()
}
}
}
PruneSelect++;
if (nGood==1 && fPruneSelect ==0 && fNtracks>1) fPruneSelect=PruneSelect;
// ! Prune on beta chisqr
nGood = 0;
......@@ -909,6 +933,8 @@ Int_t THcHallCSpectrometer::BestTrackUsingPrune()
}
}
}
PruneSelect++;
if (nGood==1 && fPruneSelect ==0 && fNtracks>1) fPruneSelect=PruneSelect;
// ! Prune on fptime
nGood = 0;
......@@ -926,6 +952,8 @@ Int_t THcHallCSpectrometer::BestTrackUsingPrune()
}
}
}
PruneSelect++;
if (nGood==1 && fPruneSelect ==0 && fNtracks>1) fPruneSelect=PruneSelect;
// ! Prune on Y2 being hit
nGood = 0;
......@@ -942,6 +970,8 @@ Int_t THcHallCSpectrometer::BestTrackUsingPrune()
}
}
}
PruneSelect++;
if (nGood==1 && fPruneSelect ==0 && fNtracks>1) fPruneSelect=PruneSelect;
// ! Prune on X2 being hit
nGood = 0;
......@@ -958,6 +988,8 @@ Int_t THcHallCSpectrometer::BestTrackUsingPrune()
}
}
}
PruneSelect++;
if (nGood==1 && fPruneSelect ==0 && fNtracks>1) fPruneSelect=PruneSelect;
// ! Pick track with best chisq if more than one track passed prune tests
Double_t chi2PerDeg = 0.;
......@@ -970,7 +1002,9 @@ Int_t THcHallCSpectrometer::BestTrackUsingPrune()
chi2Min = chi2PerDeg;
}
}
// Set index=0 for fGoodTrack
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);
......
......@@ -86,6 +86,7 @@ protected:
Double_t fPruneFpTime;
Double_t fPruneNPMT;
Double_t fSatCorr;
Double_t fPruneSelect;
Int_t fGoodTrack;
Int_t fSelUsingScin;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment