LCOV - code coverage report
Current view: top level - TEvtGen/Tauola - Tauola.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 1 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 1 0.0 %

          Line data    Source code
       1             : #ifndef _Tauola_h_included_
       2             : #define _Tauola_h_included_
       3             : 
       4             : /** 
       5             :  * @class Tauola
       6             :  *
       7             :  * @brief Controls the configuration, initialization of Tauola.
       8             :  *
       9             :  * The Tauola class provides a wrapper to the TAUOLA common block
      10             :  * responsible for setting up TAUOLA. They should then configure Tauola
      11             :  * via the set method and then call initialize(). This is a static class.
      12             :  *
      13             :  * @author Nadia Davidson
      14             :  * @date 16th June 2008
      15             :  */
      16             : 
      17             : #include <iostream>
      18             : #include "TauolaParticle.h"
      19             : #include "f_InitTauola.h"
      20             : #include "f_Variables.h"
      21             : 
      22             : namespace Tauolapp
      23             : {
      24             : 
      25             : class TauolaEvent;
      26             : class TauolaParticle;
      27             : 
      28             : class Tauola{
      29             : 
      30             :  public:
      31             : 
      32             :   static const int NS1=100,NS2=100,NS3=100,NCOS=21;
      33             : 
      34             :   /** Units */
      35             :   static enum MomentumUnits { DEFAULT_MOMENTUM=-1, MEV, GEV } momentumUnit;
      36             :   static enum LengthUnits   { DEFAULT_LENGTH  =-1, MM , CM  } lengthUnit;
      37             : 
      38             :   /** Set output units (default Tauola::GEV and Tauola::MM). */
      39             :   static void   setUnits(MomentumUnits m,LengthUnits l);
      40             : 
      41             :   /** Set tau lifetime (in mm). */
      42             :   static void   setTauLifetime(double t);
      43             : 
      44             :   /** Decay Modes */
      45             :   enum { All=0, ElectronMode, MuonMode, PionMode,
      46             :          RhoMode, A1Mode, KMode, KStarMode };
      47             : 
      48             :   /** Structure for switching the computation of spin correlation.
      49             :       By default all spin correlations are turned on. */
      50             :   struct Particles
      51             :   {
      52             :      bool GAMMA,
      53             :           Z0,
      54             :           HIGGS,
      55             :           HIGGS_H,
      56             :           HIGGS_A,
      57             :           HIGGS_PLUS,
      58             :           HIGGS_MINUS,
      59             :           W_PLUS,
      60             :           W_MINUS;
      61           0 :      void setAll(bool flag) { GAMMA=Z0=HIGGS=HIGGS_H=HIGGS_A=HIGGS_PLUS=HIGGS_MINUS=W_PLUS=W_MINUS=flag; }
      62             :   } static spin_correlation;
      63             : 
      64             :    /** Initalize Tauola with the parameters previously set via the
      65             :        setter methods */
      66             :    static void initialize();
      67             : 
      68             :    /** DEPRECATED: Use 'initialize' instead. */
      69             :    static void initialise();
      70             : 
      71             :    /** Change currents used by Tauola.
      72             :        mode = 0 (default) - use CLEO currents
      73             :        mode = 1 use RChL currents for 3pi and Belle currents for 2pi */
      74             :    static void setNewCurrents(int mode);
      75             : 
      76             :    /** Substitute build-in generator with external one */
      77             :    static void setRandomGenerator( double (*gen)() );
      78             : 
      79             :    static void setRedefineTauMinus( void (*fun)(TauolaParticle *) );
      80             :    static void setRedefineTauPlus ( void (*fun)(TauolaParticle *) );
      81             : 
      82             :    /** Tau gun. Takes one particle that's already inside an event record and produces it's decay.
      83             :        The tau provided may be undecayed first, or left intact if it already has daughters.
      84             :        If the polarization three-vector is provided it will be used to construct m_R matrix. */
      85             :    static void decayOne(TauolaParticle *tau, bool undecay=false, double polx=0,double poly=0, double polz=0);
      86             : 
      87             :    /** Checks if we are using decayOne() */
      88             :    static bool isUsingDecayOne();
      89             : 
      90             :    /** Checks if we are using boost routine for decayOne */
      91             :    static bool isUsingDecayOneBoost();
      92             : 
      93             :    /** Set boost routine for decayOne(). Refer to documentation for more details. */
      94             :    static void setBoostRoutine( void (*boost)(TauolaParticle*, TauolaParticle *) );
      95             : 
      96             :    /** Execute boost routine for decayOne() */
      97             :    static void decayOneBoost(TauolaParticle *mother, TauolaParticle *target);
      98             : 
      99             :    /** Return polarization vector used by decayOne() */
     100             :    static const double* getDecayOnePolarization();
     101             : 
     102             :    /** Set the pdg id of the particle to decay (should be 15 or -15) */
     103             :    static void setDecayingParticle(int pdg_id);
     104             : 
     105             :    /** Return the pdg id of the particle to decay */
     106             :    static int getDecayingParticle();
     107             :    
     108             :    /** Set the decay mode of all particle with pdg id the same
     109             :        as the one given in setDecayingParticle(). firstDecayMode=0 
     110             :        is default and allows all decay modes. */
     111             :    static void setSameParticleDecayMode(int firstDecayMode);
     112             :    
     113             :    /** Set the decay mode of all particle with opposite charge
     114             :        to the one given in setDecayingParticle(). secondDecayMode=0 
     115             :        is default and allows all decay modes. */
     116             :    static void setOppositeParticleDecayMode(int secondDecayMode);
     117             : 
     118             :    /** Switch for bremssthahlung in leptonic tau decays */
     119             :    static void setRadiation(bool rad);
     120             : 
     121             :    /** Cut-Off parameter of radition. Above that value photon is explicitly generated */
     122             :    static void setRadiationCutOff(double rad_cut_off);
     123             : 
     124             :    /** Initialization of some constants related to QED corrections.
     125             :        Variable iniphy_param is at present dummy. It is prepared to be transmitted
     126             :        to some old style production code and is kept for backward compatibility */
     127             :    static void setInitializePhy(double iniphy);
     128             : 
     129             :    /** DEPRECATED: Use 'setInitializePhy' instead. */
     130             :    static void setInitialisePhy(double iniphy);
     131             : 
     132             :    /** Set branching fraction for i-th channel. Can be reused several times during the run. */
     133             :    static void setTauBr(int i, double value);
     134             : 
     135             :    static void setTaukle(double bra1, double brk0, double brk0b, double brks);
     136             : 
     137             :    static double getHiggsScalarPseudoscalarMixingAngle();
     138             : 
     139             :    /** set the mixing angle. coupling: tau~(cos(phi)+isin(phi)gamma5)tau */
     140             :    static void setHiggsScalarPseudoscalarMixingAngle(double angle); 
     141             : 
     142             :    /** Get mass of the tau used by interface. */
     143             :    static double getTauMass();
     144             : 
     145             :    /** Modify Higgs Scalar-Pseudoscalar PDG id (default is 35). */
     146             :    static void setHiggsScalarPseudoscalarPDG(int pdg_id);
     147             : 
     148             :    /** Get Higgs Scalar-Pseudoscalar PDG id. */
     149             :    static int getHiggsScalarPseudoscalarPDG();
     150             : 
     151             :    static int getHelPlus();
     152             : 
     153             :    static int getHelMinus();
     154             : 
     155             :    static double getEWwt();
     156             : 
     157             :    static double getEWwt0();
     158             : 
     159             :    static void setEWwt(double wt, double wt0);
     160             : 
     161             :    static void setHelicities(int Minus, int Plus);
     162             : 
     163             :    static void setEtaK0sPi(int eta, int k, int pi);
     164             : 
     165             :    static void getBornKinematics(int *incoming_pdg_id, int *outgoing_pdg_id, double *invariant_mass_squared,double *cosTheta);
     166             : 
     167             :    static void summary();
     168             : 
     169             : public:
     170             : 
     171             :    static double table11A[NS1][NCOS][4][4],table1A[NS1][NCOS][4][4],table2A[NS1][NCOS][4][4];
     172             :    static double wtable11A[NS1][NCOS],wtable1A[NS1][NCOS],wtable2A[NS1][NCOS];
     173             :    static double w0table11A[NS1][NCOS],w0table1A[NS1][NCOS],w0table2A[NS1][NCOS];
     174             : 
     175             :    static double table11B[NS2][NCOS][4][4],table1B[NS2][NCOS][4][4],table2B[NS2][NCOS][4][4];
     176             :    static double wtable11B[NS2][NCOS],wtable1B[NS2][NCOS],wtable2B[NS2][NCOS];
     177             :    static double w0table11B[NS2][NCOS],w0table1B[NS2][NCOS],w0table2B[NS2][NCOS];
     178             : 
     179             :    static double table11C[NS3][NCOS][4][4],table1C[NS3][NCOS][4][4],table2C[NS3][NCOS][4][4];
     180             :    static double wtable11C[NS3][NCOS],wtable1C[NS3][NCOS],wtable2C[NS3][NCOS];
     181             :    static double w0table11C[NS3][NCOS],w0table1C[NS3][NCOS],w0table2C[NS3][NCOS];
     182             :    static double sminA,smaxA,sminB,smaxB,sminC,smaxC;
     183             : 
     184             :    static int ion[3];
     185             : 
     186             :    // c*tau in milimeters, survival probablility  P(t)=exp(-t/lifetime) 
     187             :    static double tau_lifetime;
     188             :    static double momentum_conservation_threshold;
     189             : 
     190             :    //born kinematic variables
     191             :    static int buf_incoming_pdg_id,  buf_outgoing_pdg_id;
     192             :    static double  buf_invariant_mass_squared,  buf_cosTheta;
     193             :    static double  buf_R[4][4]; //density matrix
     194             : 
     195             :    //pointer to random generator function
     196             :    static double (*randomDouble)();
     197             : 
     198             :    static void (*redefineTauPlusProperties)(TauolaParticle *);
     199             :    static void (*redefineTauMinusProperties)(TauolaParticle *);
     200             : 
     201             :  private:
     202             : 
     203             :   /** Calculate the charge  of particle  with code 'idhep'. 
     204             :       The code  of the  particle  is  defined by the Particle Data
     205             :       Group in Phys. Lett. B204 (1988) 1.
     206             :       NOTE: Code taken from Photos++, file: PhotosUtilities.cxx, function: PHOCHA */
     207             :   static double particleCharge(int idhep);
     208             :   
     209             :   /** Fill 'array' indices from 'beg' to 'end' with 'value' */
     210             :   static void fill_val(int beg, int end, double* array, double value);
     211             :   
     212             :   /** Default generator used in Tauola */
     213             :   static double defaultRandomGenerator();
     214             :   static void   defaultRedPlus(TauolaParticle *);
     215             :   static void   defaultRedMinus(TauolaParticle *);
     216             : 
     217             :   /** Are we using decayOne() ? */
     218             :   static bool   m_is_using_decay_one;
     219             :   /** decayOne() polarization vector */
     220             :   static double m_decay_one_polarization[3];
     221             :   /** Boost routine used by decayOne() */
     222             :   static void (*m_decay_one_boost_routine)(TauolaParticle*,TauolaParticle*);
     223             : 
     224             :   static int m_pdg_id;
     225             :   static int m_firstDecayMode; 
     226             :   static int m_secondDecayMode;
     227             :   static bool m_rad;
     228             :   static double m_rad_cut_off;
     229             :   static double m_iniphy;
     230             :   static double m_higgs_scalar_pseudoscalar_mix;
     231             :   static int m_higgs_scalar_pseudoscalar_pdg;
     232             :   static double m_wtEW;
     233             :   static double m_wtEW0;
     234             :   static int m_helPlus;
     235             :   static int m_helMinus;
     236             : };
     237             : 
     238             : } // namespace Tauolapp
     239             : #endif  
     240             : 

Generated by: LCOV version 1.11