Skip to content
Snippets Groups Projects
Commit 5d8e53d1 authored by Bertram Kopf's avatar Bertram Kopf
Browse files

added AbsLh class

parent cd724e41
No related branches found
No related tags found
No related merge requests found
#include <getopt.h>
#include <fstream>
#include <string>
#include "PwaUtils/AbsLh.hh"
#include "qft++/relativistic-quantum-mechanics/Utils.hh"
#include "ErrLogger/ErrLogger.hh"
AbsLh::AbsLh(boost::shared_ptr<const EvtDataBaseList> theEvtList) :
_evtListPtr(theEvtList)
{
_evtDataVec=_evtListPtr->getDataVecs();
_evtMCVec=_evtListPtr->getMcVecs();
}
AbsLh::AbsLh(boost::shared_ptr<AbsLh> theAbsLhPtr):
_evtListPtr(theAbsLhPtr->getEventList())
{
_evtDataVec=_evtListPtr->getDataVecs();
_evtMCVec=_evtListPtr->getMcVecs();
}
AbsLh::~AbsLh()
{
}
double AbsLh::calcLogLh(fitParams& theParamVal){
double logLH=0.;
double logLH_data=0.;
double weightSum=0.;
std::vector<EvtData*>::iterator iterd;
for (iterd=_evtDataVec.begin(); iterd!=_evtDataVec.end(); ++iterd){
double intensity=calcEvtIntensity((*iterd), theParamVal);
if (intensity>0.) logLH_data+=((*iterd)->evtWeight)*log(intensity);
weightSum+= (*iterd)->evtWeight;
}
double LH_mc=0.;
std::vector<EvtData*>::iterator iterm;
for (iterm=_evtMCVec.begin(); iterm!=_evtMCVec.end(); ++iterm){
double intensity=calcEvtIntensity((*iterm), theParamVal);
LH_mc+=intensity;
}
double logLH_mc_Norm=0.;
if (LH_mc>0.) logLH_mc_Norm=log(LH_mc/_evtMCVec.size());
logLH=weightSum *(LH_mc/_evtMCVec.size()-1)*(LH_mc/_evtMCVec.size()-1)
-2.*logLH_data
+2.*weightSum*logLH_mc_Norm;
Info << "current LH = " << logLH << endmsg;
return logLH;
}
#ifndef _AbsLh_H
#define _AbsLh_H
#include <iostream>
#include <vector>
#include <complex>
#include <cassert>
#include <boost/shared_ptr.hpp>
#include "PwaUtils/EvtDataBaseList.hh"
#include "PwaUtils/FitParamsBase.hh"
class AbsLh {
public:
// create/copy/destroy:
///Constructor
AbsLh(boost::shared_ptr<const EvtDataBaseList>);
AbsLh(boost::shared_ptr<AbsLh>);
/** Destructor */
virtual ~AbsLh();
virtual AbsLh* clone_() const =0;
// Getters:
virtual double calcLogLh(fitParams& theParamVal);
virtual double calcEvtIntensity(EvtData* theData, fitParams& theParamVal)=0;
virtual boost::shared_ptr<const EvtDataBaseList> getEventList() const {return _evtListPtr;}
virtual void print(std::ostream& os) const=0;
protected:
boost::shared_ptr<const EvtDataBaseList> _evtListPtr;
std::vector<EvtData*> _evtDataVec;
std::vector<EvtData*> _evtMCVec;
private:
};
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment