Skip to content
Snippets Groups Projects
JpsiGamKsKlKKProdLh.hh 6.57 KiB
Newer Older
Marc Pelizaeus's avatar
Marc Pelizaeus committed
#ifndef _JpsiGamKsKlKKProdLh_H
#define _JpsiGamKsKlKKProdLh_H

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <complex>

#include <cassert>
#include <boost/shared_ptr.hpp>
#include <boost/function.hpp>
Marc Pelizaeus's avatar
Marc Pelizaeus committed

#include "TROOT.h"
// #include <TSystem.h>
#include "qft++/topincludes/relativistic-quantum-mechanics.hh"

Marc Pelizaeus's avatar
Marc Pelizaeus committed
#include "PwaUtils/AbsLh.hh"
Marc Pelizaeus's avatar
Marc Pelizaeus committed
#include "Examples/JpsiGamKsKlKK/JpsiGamKsKlKKData.hh"
#include "Examples/JpsiGamKsKlKK/JpsiGamKsKlKKDynamicModelParams.hh"
Marc Pelizaeus's avatar
Marc Pelizaeus committed
#include "PwaUtils/DataUtils.hh"

#include "Minuit2/MnUserParameters.h"


class FitParamErrorMatrix;
Marc Pelizaeus's avatar
Marc Pelizaeus committed
class JpsiGamKsKlKKProdLh : public AbsLh{
Marc Pelizaeus's avatar
Marc Pelizaeus committed

public:

  // create/copy/destroy:

  ///Constructor 
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  JpsiGamKsKlKKProdLh(boost::shared_ptr<const EvtDataBaseList>, const std::map<const std::string, bool>& hypMap);
  JpsiGamKsKlKKProdLh(boost::shared_ptr<AbsLh>, const std::map<const std::string, bool>& hypMap);
Marc Pelizaeus's avatar
Marc Pelizaeus committed

  /** Destructor */
  virtual ~JpsiGamKsKlKKProdLh();

Marc Pelizaeus's avatar
Marc Pelizaeus committed
  virtual AbsLh* clone_() const {
    return new JpsiGamKsKlKKProdLh(_evtListPtr, _hypMap);
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  virtual double calcEvtIntensity( EvtData* theData, fitParams& theParamVal);
  
  //Getters:
  virtual void getDefaultParams(fitParams& fitVal, fitParams& fitErr);
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  virtual void print(std::ostream& os) const;
  void useCommonProductionPhase( bool commonPhase ){_useCommonProductionPhase=commonPhase;}
  void massIndependentFit( bool massIndep){ _massIndependentFit=massIndep;  }
  
  bool calcComponentIntensity(  EvtData* theData, fitParams& theParamVal,  FitParamErrorMatrix& theErrMatrix, std::string component, std::pair<double, double> &intensity  );
  void dumpComponentIntensity( std::ostream &os, fitParams& theParams, FitParamErrorMatrix& theErrMatrix  );
  
Marc Pelizaeus's avatar
Marc Pelizaeus committed
protected:

Marc Pelizaeus's avatar
Marc Pelizaeus committed
  virtual complex<double> calcCoherentAmp(Spin Minit, Spin lamGam, fitParams&  theParamVal, EvtData* theData);  
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  
  virtual complex<double> etaGammaAmp(Spin Minit, Spin Metac, Spin Mgamma, EvtData* theData, 
				      std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& PsiToEtaMag, 
				      std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& PsiToEtaPhi );
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  
  virtual complex<double> f0GammaAmp(Spin Minit, Spin Mgamma, EvtData* theData, 
				     std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& ampf0ProdMag, 
				     std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& ampf0ProdPhi,
				     std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& ampf0DecMag,  
				     std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& ampf0DecPhi,
				     bool useCommonProductionPhase, dynamicModelParams& dynModPars );
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  
  virtual complex<double> etaToPhiPhiTo4KAmp(EvtData* theData);
  
  virtual complex<double> f0ToPhiPhiTo4KAmp( EvtData* theData, std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& ampf0DecMag, 
					     std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& ampf0DecPhi, dynamicModelParams& dynModPars    );
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  
  virtual complex<double> f2GammaAmp(Spin Minit, Spin Mgamma, Spin fJSpin, EvtData* theData, 
Marc Pelizaeus's avatar
Marc Pelizaeus committed
				     std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& ampf2ProdMag, 
				     std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& ampf2ProdPhi,
				     std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& ampf2DecMag,  
				     std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& ampf2DecPhi,
				     double mass, double width, bool useCommonProductionPhase, dynamicModelParams& dynModPars );
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  complex<double> f2ToPhiPhiTo4KAmp( EvtData* theData, Spin f2Lambda, 
				     std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > &ampf2DecMag , 
				     std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > &ampf2DecPhi,
				     dynamicModelParams& dynModPars);
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  complex<double> phiphiTo4KAmp(  EvtData* theData, Spin lambdaPhi1, Spin lambdaPhi2  );

  bool  initializeFlatteModel( dynamicModelParams &theDynModel, const Vector4<double> &fv2Phi, double mass, double gPhiPhi, double gKK );
  bool  initializeBreitWignerModel(dynamicModelParams &theDynModel,const Vector4<double> &fv2Phi, double mass, double width, dynamicModelParams::enumDynamicModel theModel  );
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  
  void calcEtacGammaAmp( EvtData* theData, fitParams& theParamVal, complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
			dynamicModelParams::enumDynamicModel theModel);
  void calcEta2225Amp(EvtData* theData, fitParams& theParamVal, complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm,
		      dynamicModelParams::enumDynamicModel theModel);
  
  void calcF02020Amp(EvtData* theData, fitParams& theParamVal, complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
		     dynamicModelParams::enumDynamicModel theModel);

  void calcF22300Amp(EvtData* theData, fitParams& theParamVal,complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
		     dynamicModelParams::enumDynamicModel theModel);
  
  void calcE21870Amp(EvtData* theData, fitParams& theParamVal, complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
		     dynamicModelParams::enumDynamicModel theModel);
  
  void calcF1Amp(EvtData* theData, fitParams& theParamVal, complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
		 dynamicModelParams::enumDynamicModel theModel);
  
  bool _etacHyp;
  bool _eta2225Hyp;
  bool _f02020Hyp;
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  bool _f02020FlatteHyp;
  
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  bool _f22300Hyp;
  bool _eta21870Hyp;
  bool _f1Hyp;
  
  bool _useCommonProductionPhase;
  bool _massIndependentFit;
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  
  std::map<const std::string, bool> _hypMap;
Marc Pelizaeus's avatar
Marc Pelizaeus committed
private:
  void calcAmpError( EvtData* theData, fitParams& theParamVal, FitParamErrorMatrix& theErrMatrix,  
 		       dynamicModelParams::enumDynamicModel theModel, 
		     boost::function<void(EvtData* , fitParams&, complex<double>&, 
					  complex<double>&, complex<double>&, complex<double>&, dynamicModelParams::enumDynamicModel)>, 
		     std::vector< int >, double& );

  
Marc Pelizaeus's avatar
Marc Pelizaeus committed
  bool initializeHypothesisMap( const std::map<const std::string, bool>& hypMap   );

  const double _phiMass;// = 1.019455;
  const double _kaonMass;// = 0.493677;