CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
HLTDeDxFilter Class Reference

#include <HLTDeDxFilter.h>

Inheritance diagram for HLTDeDxFilter:
HLTFilter edm::global::EDFilter<> edm::global::EDFilterBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 HLTDeDxFilter (const edm::ParameterSet &)
 
virtual bool hltFilter (edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
 
 ~HLTDeDxFilter ()
 
- Public Member Functions inherited from HLTFilter
 HLTFilter (const edm::ParameterSet &config)
 
int module (edm::Event const &) const
 
const std::string * moduleLabel () const
 
int path (edm::Event const &) const
 
const std::string * pathName (edm::Event const &) const
 
std::pair< int, int > pmid (edm::Event const &) const
 
bool saveTags () const
 
virtual ~HLTFilter ()
 
- Public Member Functions inherited from edm::global::EDFilter<>
 EDFilter ()=default
 
- Public Member Functions inherited from edm::global::EDFilterBase
 EDFilterBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDFilterBase ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from HLTFilter
static void makeHLTFilterDescription (edm::ParameterSetDescription &desc)
 
- Static Public Member Functions inherited from edm::global::EDFilterBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Attributes

edm::InputTag caloTowersTag_
 
edm::EDGetToken caloTowersToken_
 
edm::InputTag inputdedxTag_
 
edm::EDGetToken inputdedxToken_
 
edm::InputTag inputTracksTag_
 
edm::EDGetToken inputTracksToken_
 
double maxAssocCaloE_
 
double maxAssocCaloEDeltaRSize_
 
double maxETA_
 
double maxNHitMissIn_
 
double maxNHitMissMid_
 
double maxRelTrkIsoDeltaRp3_
 
double minDEDx_
 
double minNOM_
 
double minNumValidHits_
 
double minPT_
 
double relTrkIsoDeltaRSize_
 
bool saveTags_
 
edm::InputTag thisModuleTag_
 

Additional Inherited Members

- Public Types inherited from edm::global::EDFilterBase
typedef EDFilterBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Author
Claude Nuttens
Gheorghe Lungu

Definition at line 22 of file HLTDeDxFilter.h.

Constructor & Destructor Documentation

HLTDeDxFilter::HLTDeDxFilter ( const edm::ParameterSet iConfig)
explicit

Definition at line 36 of file HLTDeDxFilter.cc.

References caloTowersTag_, caloTowersToken_, edm::ParameterSet::getParameter(), inputdedxTag_, inputdedxToken_, HLT_25ns14e33_v1_cff::InputTag, inputTracksTag_, inputTracksToken_, maxAssocCaloE_, maxAssocCaloEDeltaRSize_, maxETA_, maxNHitMissIn_, maxNHitMissMid_, maxRelTrkIsoDeltaRp3_, minDEDx_, minNOM_, minNumValidHits_, minPT_, relTrkIsoDeltaRSize_, AlCaHLTBitMon_QueryRunRegistry::string, and thisModuleTag_.

36  : HLTFilter(iConfig)
37 {
38  minDEDx_ = iConfig.getParameter<double> ("minDEDx");
39  minPT_ = iConfig.getParameter<double> ("minPT");
40  minNOM_ = iConfig.getParameter<double> ("minNOM");
41  maxETA_ = iConfig.getParameter<double> ("maxETA");
42  minNumValidHits_ = iConfig.getParameter<double> ("minNumValidHits");
43  maxNHitMissIn_ = iConfig.getParameter<double> ("maxNHitMissIn");
44  maxNHitMissMid_ = iConfig.getParameter<double> ("maxNHitMissMid");
45  maxRelTrkIsoDeltaRp3_ = iConfig.getParameter<double> ("maxRelTrkIsoDeltaRp3");
46  relTrkIsoDeltaRSize_ = iConfig.getParameter<double> ("relTrkIsoDeltaRSize");
47  maxAssocCaloE_ = iConfig.getParameter<double> ("maxAssocCaloE");
48  maxAssocCaloEDeltaRSize_ = iConfig.getParameter<double> ("maxAssocCaloEDeltaRSize");
49  inputTracksTag_ = iConfig.getParameter< edm::InputTag > ("inputTracksTag");
50  inputdedxTag_ = iConfig.getParameter< edm::InputTag > ("inputDeDxTag");
51  caloTowersTag_ = iConfig.getParameter<edm::InputTag>("caloTowersTag");
52 
53  if(maxAssocCaloE_ >= 0) caloTowersToken_ = consumes<CaloTowerCollection> (iConfig.getParameter<edm::InputTag>("caloTowersTag"));
54  inputTracksToken_ = consumes<reco::TrackCollection>(iConfig.getParameter< edm::InputTag > ("inputTracksTag"));
55  inputdedxToken_ = consumes<edm::ValueMap<reco::DeDxData> >(iConfig.getParameter< edm::InputTag > ("inputDeDxTag"));
56 
57  thisModuleTag_ = edm::InputTag(iConfig.getParameter<std::string>("@module_label"));
58 
59  //register your products
60  produces<reco::RecoChargedCandidateCollection>();
61 }
T getParameter(std::string const &) const
edm::EDGetToken inputdedxToken_
Definition: HLTDeDxFilter.h:45
double maxNHitMissMid_
Definition: HLTDeDxFilter.h:38
edm::EDGetToken inputTracksToken_
Definition: HLTDeDxFilter.h:43
double relTrkIsoDeltaRSize_
Definition: HLTDeDxFilter.h:40
double maxAssocCaloEDeltaRSize_
Definition: HLTDeDxFilter.h:42
edm::EDGetToken caloTowersToken_
Definition: HLTDeDxFilter.h:44
edm::InputTag inputdedxTag_
Definition: HLTDeDxFilter.h:48
edm::InputTag thisModuleTag_
Definition: HLTDeDxFilter.h:49
double maxRelTrkIsoDeltaRp3_
Definition: HLTDeDxFilter.h:39
edm::InputTag inputTracksTag_
Definition: HLTDeDxFilter.h:47
edm::InputTag caloTowersTag_
Definition: HLTDeDxFilter.h:46
double maxAssocCaloE_
Definition: HLTDeDxFilter.h:41
HLTFilter(const edm::ParameterSet &config)
Definition: HLTFilter.cc:20
double minNumValidHits_
Definition: HLTDeDxFilter.h:36
double maxNHitMissIn_
Definition: HLTDeDxFilter.h:37
HLTDeDxFilter::~HLTDeDxFilter ( )

Definition at line 64 of file HLTDeDxFilter.cc.

64 {}

Member Function Documentation

void HLTDeDxFilter::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 66 of file HLTDeDxFilter.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), and HLT_25ns14e33_v1_cff::InputTag.

66  {
68  desc.add<bool>("saveTags",false);
69  desc.add<double>("minDEDx",0.0);
70  desc.add<double>("minPT",0.0);
71  desc.add<double>("minNOM",0.0);
72  desc.add<double>("maxETA",5.5);
73  desc.add<double>("minNumValidHits",0);
74  desc.add<double>("maxNHitMissIn",99);
75  desc.add<double>("maxNHitMissMid",99);
76  desc.add<double>("maxRelTrkIsoDeltaRp3", -1);
77  desc.add<double>("relTrkIsoDeltaRSize", 0.3);
78  desc.add<double>("maxAssocCaloE", -99);
79  desc.add<double>("maxAssocCaloEDeltaRSize", 0.5);
80  desc.add<edm::InputTag>("caloTowersTag",edm::InputTag("hltTowerMakerForAll"));
81  desc.add<edm::InputTag>("inputTracksTag",edm::InputTag("hltL3Mouns"));
82  desc.add<edm::InputTag>("inputDeDxTag",edm::InputTag("HLTdedxHarm2"));
83  descriptions.add("hltDeDxFilter",desc);
84 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool HLTDeDxFilter::hltFilter ( edm::Event iEvent,
const edm::EventSetup iSetup,
trigger::TriggerFilterObjectWithRefs filterproduct 
) const
overridevirtual

Implements HLTFilter.

Definition at line 90 of file HLTDeDxFilter.cc.

References accept(), trigger::TriggerFilterObjectWithRefs::addCollectionTag(), trigger::TriggerRefsCollections::addObject(), edm::SortedCollection< T, SORT >::begin(), caloTowersToken_, reco::deltaR2(), edm::SortedCollection< T, SORT >::end(), eta, edm::Event::getByToken(), i, inputdedxTag_, inputdedxToken_, inputTracksTag_, inputTracksToken_, j, maxAssocCaloE_, maxAssocCaloEDeltaRSize_, maxETA_, maxNHitMissIn_, maxNHitMissMid_, maxRelTrkIsoDeltaRp3_, minDEDx_, minNOM_, minNumValidHits_, minPT_, reco::HitPattern::MISSING_INNER_HITS, listHistos::NTracks, p4, phi, funct::pow(), EnergyCorrector::pt, edm::Event::put(), lumiQueryAPI::q, dt_dqm_sourceclient_common_cff::reco, relTrkIsoDeltaRSize_, HLTFilter::saveTags(), reco::RecoChargedCandidate::setTrack(), mathSSE::sqrt(), thisModuleTag_, reco::HitPattern::TRACK_HITS, HLT_25ns14e33_v3_cff::trackCollection, and trigger::TriggerMuon.

91 {
92  using namespace std;
93  using namespace edm;
94  using namespace reco;
95  using namespace trigger;
96 
97  auto_ptr<RecoChargedCandidateCollection> chargedCandidates( new std::vector<RecoChargedCandidate> );
98 
99  ModuleDescription moduleDesc_;
100 
101  if (saveTags()){
102  filterproduct.addCollectionTag(thisModuleTag_);
103  filterproduct.addCollectionTag(inputTracksTag_);
104  filterproduct.addCollectionTag(inputdedxTag_);
105  }
106 
107  edm::Handle<reco::TrackCollection> trackCollectionHandle;
108  iEvent.getByToken(inputTracksToken_,trackCollectionHandle);
109  const reco::TrackCollection &trackCollection = *trackCollectionHandle.product();
110 
112  iEvent.getByToken(inputdedxToken_, dEdxTrackHandle);
113  const edm::ValueMap<reco::DeDxData> &dEdxTrack = *dEdxTrackHandle.product();
114 
115  edm::Handle<CaloTowerCollection> caloTowersHandle;
116  if(maxAssocCaloE_ >= 0) iEvent.getByToken(caloTowersToken_, caloTowersHandle);
117 
118  bool accept=false;
119  int NTracks = 0;
120  //fill local arrays for eta, phi, and pt
121  float eta[trackCollection.size()], phi[trackCollection.size()], pt[trackCollection.size()];
122  for(unsigned int i=0; i<trackCollection.size(); i++){
123  eta[i] = trackCollection[i].eta();
124  phi[i] = trackCollection[i].phi();
125  pt[i] = trackCollection[i].pt();
126  }
127  for(unsigned int i=0; i<trackCollection.size(); i++){
128  reco::TrackRef track = reco::TrackRef( trackCollectionHandle, i );
129  if(pt[i]>minPT_ && fabs(eta[i])<maxETA_ && dEdxTrack[track].numberOfMeasurements()>minNOM_ && dEdxTrack[track].dEdx()>minDEDx_){
130  NTracks++;
131  if(track->numberOfValidHits() < minNumValidHits_) continue;
132  if(track->hitPattern().trackerLayersWithoutMeasurement( reco::HitPattern::MISSING_INNER_HITS) > maxNHitMissIn_) continue;
133  if(track->hitPattern().trackerLayersWithoutMeasurement( reco::HitPattern::TRACK_HITS) > maxNHitMissMid_) continue;
134  if (saveTags()){
135  Particle::Charge q = track->charge();
136  //SAVE DEDX INFORMATION AS IF IT WAS THE MASS OF THE PARTICLE
137  Particle::LorentzVector p4(track->px(), track->py(), track->pz(), sqrt(pow(track->p(),2) + pow(dEdxTrack[track].dEdx(),2)));
138  Particle::Point vtx(track->vx(),track->vy(), track->vz());
139  //SAVE NOH, NOM, NOS INFORMATION AS IF IT WAS THE PDGID OF THE PARTICLE
140  int Hits = ((dEdxTrack[track].numberOfSaturatedMeasurements()&0xFF)<<16) | ((dEdxTrack[track].numberOfMeasurements()&0xFF)<<8) | (track->found()&0xFF);
141  RecoChargedCandidate cand(q, p4, vtx, Hits, 0);
142  cand.setTrack(track);
143  chargedCandidates->push_back(cand);
144  }
145 
146  //calculate relative trk isolation only if parameter maxRelTrkIsoDeltaRp3 is greater than 0
147  if(maxRelTrkIsoDeltaRp3_ >= 0){
148  auto ptCone = trackCollection[i].pt();
149  for(unsigned int j=0; j<trackCollection.size(); j++){
150  if (i==j) continue; // do not compare track to itself
151  auto trkDeltaR2 = deltaR2(eta[i], phi[i], eta[j], phi[j]);
152  if (trkDeltaR2 < relTrkIsoDeltaRSize_ * relTrkIsoDeltaRSize_){
153  ptCone+=pt[j];
154  }
155  }
156  double relTrkIso = (ptCone - pt[i])/(pt[i]);
157  if (relTrkIso > maxRelTrkIsoDeltaRp3_) continue;
158  }
159 
160  //calculate the calorimeter energy associated with the track if maxAssocCaloE_ >= 0
161  if(maxAssocCaloE_ >= 0){
162  //Access info about Calo Towers
163  double caloEMDeltaRp5 = 0;
164  double caloHadDeltaRp5 = 0;
165  const CaloTowerCollection &caloTower = *caloTowersHandle.product();
166  for (CaloTowerCollection::const_iterator j=caloTower.begin(); j!=caloTower.end(); j++) {
167  auto caloDeltaR2 = deltaR2(eta[i], phi[i], j->eta(), j->phi());
168  double Eem = j->emEnergy();
169  double Ehad = j->hadEnergy();
170 
171  if (caloDeltaR2 < (maxAssocCaloEDeltaRSize_ * maxAssocCaloEDeltaRSize_) ) {
172  caloEMDeltaRp5 += Eem;
173  caloHadDeltaRp5 += Ehad;
174  }
175  }
176  if (caloEMDeltaRp5 + caloHadDeltaRp5 > maxAssocCaloE_) continue;
177  }
178 
179  accept=true;
180  }
181  }
182 
183  // put filter object into the Event
184  if(saveTags()){
185  edm::OrphanHandle<RecoChargedCandidateCollection> chargedCandidatesHandle = iEvent.put(chargedCandidates);
186  for(int i=0; i<NTracks; i++){
187  filterproduct.addObject(TriggerMuon,RecoChargedCandidateRef(chargedCandidatesHandle,i));
188  }
189  }
190 
191  return accept;
192 }
int i
Definition: DBlmapReader.cc:9
edm::EDGetToken inputdedxToken_
Definition: HLTDeDxFilter.h:45
double maxNHitMissMid_
Definition: HLTDeDxFilter.h:38
edm::EDGetToken inputTracksToken_
Definition: HLTDeDxFilter.h:43
double relTrkIsoDeltaRSize_
Definition: HLTDeDxFilter.h:40
double maxAssocCaloEDeltaRSize_
Definition: HLTDeDxFilter.h:42
tuple NTracks
Definition: listHistos.py:91
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
std::vector< CaloTower >::const_iterator const_iterator
edm::Ref< RecoChargedCandidateCollection > RecoChargedCandidateRef
reference to an object in a collection of RecoChargedCandidate objects
edm::EDGetToken caloTowersToken_
Definition: HLTDeDxFilter.h:44
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:24
std::pair< double, double > Point
Definition: CaloEllipse.h:18
edm::InputTag inputdedxTag_
Definition: HLTDeDxFilter.h:48
edm::InputTag thisModuleTag_
Definition: HLTDeDxFilter.h:49
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref&lt;C&gt;)
double maxRelTrkIsoDeltaRp3_
Definition: HLTDeDxFilter.h:39
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:120
T sqrt(T t)
Definition: SSEVec.h:48
double p4[4]
Definition: TauolaWrapper.h:92
edm::InputTag inputTracksTag_
Definition: HLTDeDxFilter.h:47
int j
Definition: DBlmapReader.cc:9
double deltaR2(const T1 &t1, const T2 &t2)
Definition: deltaR.h:36
double maxAssocCaloE_
Definition: HLTDeDxFilter.h:41
const_iterator end() const
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
Definition: TrackFwd.h:20
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
bool saveTags() const
Definition: HLTFilter.h:45
double minNumValidHits_
Definition: HLTDeDxFilter.h:36
double maxNHitMissIn_
Definition: HLTDeDxFilter.h:37
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
const_iterator begin() const
math::PtEtaPhiELorentzVectorF LorentzVector

Member Data Documentation

edm::InputTag HLTDeDxFilter::caloTowersTag_
private

Definition at line 46 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter().

edm::EDGetToken HLTDeDxFilter::caloTowersToken_
private

Definition at line 44 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

edm::InputTag HLTDeDxFilter::inputdedxTag_
private

Definition at line 48 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

edm::EDGetToken HLTDeDxFilter::inputdedxToken_
private

Definition at line 45 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

edm::InputTag HLTDeDxFilter::inputTracksTag_
private

Definition at line 47 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

edm::EDGetToken HLTDeDxFilter::inputTracksToken_
private

Definition at line 43 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

double HLTDeDxFilter::maxAssocCaloE_
private

Definition at line 41 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

double HLTDeDxFilter::maxAssocCaloEDeltaRSize_
private

Definition at line 42 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

double HLTDeDxFilter::maxETA_
private

Definition at line 35 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

double HLTDeDxFilter::maxNHitMissIn_
private

Definition at line 37 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

double HLTDeDxFilter::maxNHitMissMid_
private

Definition at line 38 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

double HLTDeDxFilter::maxRelTrkIsoDeltaRp3_
private

Definition at line 39 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

double HLTDeDxFilter::minDEDx_
private

Definition at line 32 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

double HLTDeDxFilter::minNOM_
private

Definition at line 34 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

double HLTDeDxFilter::minNumValidHits_
private

Definition at line 36 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

double HLTDeDxFilter::minPT_
private

Definition at line 33 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

double HLTDeDxFilter::relTrkIsoDeltaRSize_
private

Definition at line 40 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().

bool HLTDeDxFilter::saveTags_
private

Definition at line 31 of file HLTDeDxFilter.h.

edm::InputTag HLTDeDxFilter::thisModuleTag_
private

Definition at line 49 of file HLTDeDxFilter.h.

Referenced by HLTDeDxFilter(), and hltFilter().