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.2 by grimes, Thu Jul 4 16:22:42 2013 UTC vs.
Revision 1.3 by grimes, Wed Jul 24 11:48:55 2013 UTC

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