1 #ifndef CompositeLogicalTrajectoryFilter_H
2 #define CompositeLogicalTrajectoryFilter_H
19 std::vector<edm::ParameterSet> vpset=pset.
getParameter<std::vector<edm::ParameterSet> >(
"filters");
20 for (
unsigned int i=0;
i!= vpset.size();
i++)
25 else if (ls ==
"AND") l=
AND;
27 edm::LogError(
"CompositeLogicalTrajectoryFilter")<<
"I don't understand the logic: "<<
ls
39 item.second->setEvent(iEvent, iSetup);
52 template <
class T>
bool TBC(
T& traj)
const{
55 for (;i<
n;i++){
if (!
filters[i].
second->toBeContinued(traj))
return false; }
59 template <
class T>
bool QF(
const T& traj)
const{
63 if (n==0) {
edm::LogError(
"CompositeLogicalTrajectoryFilter")<<n<<
" filters !." ;
return false;}
64 condition=
filters[0].second->qualityFilter(traj);
68 bool lcondition =
filters[
i].second->qualityFilter(traj);
70 condition= condition || lcondition;
72 condition= condition && lcondition;
78 std::vector< std::pair< logic, std::unique_ptr<TrajectoryFilter> > >
filters;
T getParameter(std::string const &) const
void setEvent(const edm::Event &iEvent, const edm::EventSetup &iSetup) override
virtual bool toBeContinued(TempTrajectory &traj) const
CompositeLogicalTrajectoryFilter()
std::vector< std::pair< logic, std::unique_ptr< TrajectoryFilter > > > filters
virtual bool toBeContinued(Trajectory &traj) const
CompositeLogicalTrajectoryFilter(const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
U second(std::pair< T, U > const &p)
~CompositeLogicalTrajectoryFilter()
virtual bool qualityFilter(const TempTrajectory &traj) const
virtual bool qualityFilter(const Trajectory &traj) const
virtual std::string name() const
T get(const Candidate &c)
bool QF(const T &traj) const