Fork me on GitHub

Changeset fa42514 in git for modules


Ignore:
Timestamp:
May 22, 2015, 6:00:15 PM (9 years ago)
Author:
Chase Shimmin <cshimmin@…>
Branches:
ImprovedOutputFile, Timing, dual_readout, llp, master
Children:
f3c4047
Parents:
e8070b6
git-author:
Chase Shimmin <cshimmin@…> (05/22/15 17:50:49)
git-committer:
Chase Shimmin <cshimmin@…> (05/22/15 18:00:15)
Message:

Add Invert and Status options to PdgCodeFilter

It is sometimes useful to output the truth record of a single
(non-stable) particle species, for example when considering an
exotic heavy resonance. Presently the only way to do so is to
output the entire Delphes/allParticles array, which is inefficient.

This patch adds the option InvertPdg to PdgCodeFilter, which causes
the PdgCodes specified to be *added* to the output array, rather
than removed. It also adds the options RequireStatus and Status,
for additional filtering based on the MC record status. If
RequireStatus is true, than only particles matching Status are
added to the output array.

This patch should be backwards compatible with existing usages of
PdgCodeFilter.

Location:
modules
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • modules/PdgCodeFilter.cc

    re8070b6 rfa42514  
    7474  fPTMin = GetDouble("PTMin", 0.0);
    7575
     76  fInvertPdg = GetBool("InvertPdg", false);
     77
     78  fRequireStatus = GetBool("RequireStatus", false);
     79  fStatus = GetInt("Status", 1);
     80
    7681  // import input array
    7782  fInputArray = ImportArray(GetString("InputArray", "Delphes/allParticles"));
     
    109114  Double_t pt;
    110115
     116  const Bool_t requireStatus = fRequireStatus;
     117  const Bool_t invertPdg = fInvertPdg;
     118  const int reqStatus = fStatus;
     119
    111120  fItInputArray->Reset();
    112121  while((candidate = static_cast<Candidate*>(fItInputArray->Next())))
     
    116125    pt = candidateMomentum.Pt();
    117126
     127    if(pt < fPTMin) continue;
     128    if(requireStatus && (candidate->Status != reqStatus)) continue;
     129
    118130    pass = kTRUE;
    119 
    120     if(pt < fPTMin) pass = kFALSE;
    121131    if(find(fPdgCodes.begin(), fPdgCodes.end(), pdgCode) != fPdgCodes.end()) pass = kFALSE;
    122132
     133    if (invertPdg) pass = !pass;
    123134    if(pass) fOutputArray->Add(candidate);
    124135  }
  • modules/PdgCodeFilter.h

    re8070b6 rfa42514  
    5050
    5151  Double_t fPTMin; //!
     52  Bool_t fInvertPdg; //!
     53  Bool_t fRequireStatus; //!
     54  Int_t fStatus; //!
    5255
    5356  std::vector<Int_t> fPdgCodes;
Note: See TracChangeset for help on using the changeset viewer.