HighLAND
Public Member Functions | List of all members
numuCCBwd::FindMuonCandidateAction Class Reference

Find Muon candidate. More...

#include <numuCCBwdSelection.hxx>

Inheritance diagram for numuCCBwd::FindMuonCandidateAction:
StepBase

Public Member Functions

bool Apply (AnaEventC &event, ToyBoxB &box) const
 
StepBaseMakeClone ()
 MANDATORY FUNCTIONS !!!
 
- Public Member Functions inherited from StepBase
void SetTitle (const std::string &title)
 
void SetType (TypeEnum type)
 Set the type of this step.
 
void SetBreak (bool b)
 Set whether the cut sequence should be stopped when this cut fails.
 
void SetIndex (Int_t index)
 Set the index of this step.
 
const std::string & Title () const
 Return the title of this step.
 
TypeEnum Type () const
 Return the type of this step.
 
bool Break () const
 Return true if the cut sequence should be stopped when a cut fails.
 
Int_t Index () const
 Return the index of this step.
 
std::string ConvertType () const
 Convert into a string the type of this step.
 
void DisableInBranch (Int_t branch)
 Disable step in a given branch.
 
void EnableInBranch (Int_t branch)
 Enable step in a given branch.
 
bool IsDisabledInBranch (Int_t branch) const
 Returns true if the step is disabled in the specified branch.
 
const std::vector< StepBase * > & GetNextSteps () const
 Returns the vector of next steps.
 
void RemoveNextStep (const std::string &title, Int_t ID=0)
 Remove step with a given title (and branch ID) from next steps.
 
void AddBranchUniqueID (UInt_t ibranch)
 
void RemoveBranchUniqueID (UInt_t branch)
 Remove a branch unique ID from this step.
 
const std::vector< UInt_t > & GetBranchUniqueIDs () const
 Returns the vector of branche unique IDs associated to this step.
 
void AddNextStep (StepBase *step, Int_t branch=-1)
 
void GetNextSteps (std::vector< StepBase *> &steps, bool withSplits=false)
 Get the vector of next steps.
 
BranchStatus GetNextStepsInBranch (std::vector< StepBase *> &steps, Int_t branch)
 Get the vector of next steps in a given branch, returns a status code.
 
void ValidateStepRecursive () const
 check that the step and all its suns are correct (it was branch unique IDs defined)
 
 ClassDef (StepBase, 1)
 

Additional Inherited Members

- Public Types inherited from StepBase
enum  TypeEnum { kCut =0, kAction, kUnknown }
 Enumerator describing the values that _type member can take.
 
enum  BranchStatus { BranchOK =0, BranchEmpty, NoBranches, BranchOutOfRange }
 
- Protected Attributes inherited from StepBase
TypeEnum _type
 The type of this step: cut or action.
 
bool _break
 true if the cut sequence should be stopped when a cut fails
 
std::string _title
 The title of this step, which is used by the DrawingTools.
 
std::vector< bool > _disabledInBranch
 Is the step disabled in a given branch.
 
std::vector< StepBase * > _nextSteps
 The vector of next steps.
 
std::vector< UInt_t > _branchUniqueIDs
 Branch unique IDs associated to this step.
 
Int_t _index
 Index of the step in the selection.
 

Detailed Description

Find Muon candidate.

Definition at line 150 of file numuCCBwdSelection.hxx.

Member Function Documentation

§ Apply()

bool numuCCBwd::FindMuonCandidateAction::Apply ( AnaEventC event,
ToyBoxB box 
) const
virtual

The return value should specify whether the step was passed. For actions the return value is ignored

Reimplemented from StepBase.

Definition at line 292 of file numuCCBwdSelection.cxx.

292  {
293 //**************************************************
294 
295  /*
296  Can't use the usual find leading track action since it requires the upstream and not the downstream end to be inside the FGD FV
297  Muon candidate is taken as the highest mom "positive" track whose downstream end is inside the FGD FV, >18 TPC hits needed
298  <=> HMPT FGD FV end <=> HMNT FGD FV start
299  */
300 
301  // Cast the ToyBox to the appropriate type
302  ToyBoxTracker& box = *static_cast<ToyBoxTracker*>(&boxB);
303 
304  box.MainTrack = NULL;
305 
306  EventBoxB* EventBox = event.EventBoxes[EventBoxId::kEventBoxTracker];
307  AnaRecObjectC** selTracksNS = EventBox->RecObjectsInGroup[EventBoxTracker::kTracksWithTPC];
308  int nTPC = EventBox->nRecObjectsInGroup[EventBoxTracker::kTracksWithTPC];
309 
310  //Sort according to TPC mom TODO : put it in a correction
311  std::vector<AnaTrackB*> selTracksV;
312  for (Int_t i=0;i<nTPC; ++i){
313  selTracksV.push_back( static_cast<AnaTrackB*>(selTracksNS[i]) );
314  }
315  std::sort(selTracksV.begin(), selTracksV.end(), HMFirst);
316 
317 
318  //Copy vector in an array
319  AnaTrackB** selTracks = new AnaTrackB*[nTPC];
320  std::copy(selTracksV.begin(), selTracksV.end(), selTracks);
321 
322 
323 
324  //loop over tpc tracks
325  for (Int_t i=0;i<nTPC; ++i){
326  AnaTrackB* track = selTracks[i];
327 
328  if( numuCCBwd::EndsInFGDFV(*track) != box.DetectorFV ) continue;
329 
330  //apply the quality cut (>18 hits in TPC)
331  if ( ( box.DetectorFV == SubDetId::kFGD1 && !numuCCBwd::TrackQualityCut(*track, SubDetId::kTPC1 ) )
332  || ( box.DetectorFV == SubDetId::kFGD2 && !numuCCBwd::TrackQualityCut(*track, SubDetId::kTPC2 ) ) ){
333  continue;
334  }
335 
336 
337  //Require a "positive" charge (implies a negative one in the backward hypothesis)
338  if( track->Charge == 1 ){
339  //Take the first (HM) track which satifsies the previous requirements
340  box.MainTrack = track;
341 
342  delete[] selTracks;
343  return true;
344  }
345  }
346 
347  delete[] selTracks;
348  return false;
349 
350 }
SubDetId_h DetectorFV
Indicate the FV we are interested in.
Definition: ToyBoxB.hxx:52
AnaTrackB * MainTrack
For storing the Main Track (The lepton candidate in geranal: HMN or HMP track)
Float_t Charge
The reconstructed charge of the particle.
Int_t nRecObjectsInGroup[NMAXRECOBJECTGROUPS]
----—— RecObjects and TrueRecObjects used in the selection and systematics ------------—— ...
Representation of a global track.

The documentation for this class was generated from the following files: