ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/grimes/L1Menu/src/ReducedSample.cpp
(Generate patch)

Comparing UserCode/grimes/L1Menu/src/ReducedSample.cpp (file contents):
Revision 1.1 by grimes, Thu Jul 4 13:02:22 2013 UTC vs.
Revision 1.3 by grimes, Wed Jul 24 11:48:55 2013 UTC

# Line 268 | Line 268 | l1menu::ReducedSample::ReducedSample( co
268          : pImple_( new l1menu::ReducedSamplePrivateMembers( *this, triggerMenu ) )
269   {
270          addSample( originalSample );
271 +        setEventRate( originalSample.eventRate() );
272   }
273  
274   l1menu::ReducedSample::ReducedSample( const l1menu::TriggerMenu& triggerMenu )
# Line 531 | Line 532 | float l1menu::ReducedSample::sumOfWeight
532   std::unique_ptr<const l1menu::IMenuRate> l1menu::ReducedSample::rate( const l1menu::TriggerMenu& menu ) const
533   {
534          // TODO make sure the TriggerMenu is valid for this sample
535 <
535 <        // The number of events that pass each trigger
536 <        std::vector<size_t> numberOfEventsPassed( menu.numberOfTriggers() );
537 <        float numberOfEventsPassingAnyTrigger;
538 <
539 <        // Using cached triggers significantly increases speed for ReducedSample
540 <        // because it cuts out expensive string comparisons when querying the trigger
541 <        // parameters.
542 <        std::vector< std::unique_ptr<l1menu::ICachedTrigger> > cachedTriggers;
543 <        for( size_t triggerNumber=0; triggerNumber<menu.numberOfTriggers(); ++triggerNumber )
544 <        {
545 <                cachedTriggers.push_back( createCachedTrigger( menu.getTrigger( triggerNumber ) ) );
546 <        }
547 <
548 <        for( size_t eventNumber=0; eventNumber<numberOfEvents(); ++eventNumber )
549 <        {
550 <                const l1menu::IEvent& event=getEvent(eventNumber);
551 <                bool anyTriggerPassed=false;
552 <
553 <                for( size_t triggerNumber=0; triggerNumber<cachedTriggers.size(); ++triggerNumber )
554 <                {
555 <                        if( cachedTriggers[triggerNumber]->apply(event) )
556 <                        {
557 <                                // If the event passes the trigger, increment the counter
558 <                                ++numberOfEventsPassed[triggerNumber];
559 <                                anyTriggerPassed=true;
560 <                        }
561 <                }
562 <
563 <                if( anyTriggerPassed ) ++numberOfEventsPassingAnyTrigger;
564 <        }
565 <
566 <        l1menu::implementation::MenuRateImplementation* pRates=new l1menu::implementation::MenuRateImplementation;
567 <        // This is the value I want to return, but I still need access to the extended attributes of the subclass
568 <        std::unique_ptr<const l1menu::IMenuRate> pReturnValue( pRates );
569 <
570 <        pRates->setScaling( pImple_->eventRate );
571 <
572 <        pRates->setTotalFraction( static_cast<float>(numberOfEventsPassingAnyTrigger)/static_cast<float>(numberOfEvents()) );
573 <
574 <        for( size_t triggerNumber=0; triggerNumber<numberOfEventsPassed.size(); ++triggerNumber )
575 <        {
576 <                float fraction=static_cast<float>(numberOfEventsPassed[triggerNumber])/static_cast<float>(numberOfEvents());
577 <                pRates->addTriggerRate( menu.getTrigger(triggerNumber), fraction );
578 <        }
579 <
580 <        return pReturnValue;
535 >        return std::unique_ptr<const l1menu::IMenuRate>( new l1menu::implementation::MenuRateImplementation( menu, *this ) );
536   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines