Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Lfluk.h

Go to the documentation of this file.
00001 #ifndef LFLUK_HH
00002 #define LFLUK_HH 
00003 
00004 #include <map>
00005 #include <vector>
00006 #include <iostream>
00007 #include <fstream>
00008 #include <cmath>
00009 #include "Rtypes.h"
00010 #include "TMVA/TSpline1.h"
00011 
00012 class TFile;
00013 class TH2F;
00014 class TH2D;
00015 class TH2;
00016 class TF1;
00017 
00018 class Registry;
00019 
00020 class Lfluk {
00021 
00022 public:
00023 
00024    Lfluk(/*const char* dir=""*/);
00025    virtual ~Lfluk();
00026 
00027    void SetConfig(const std::string param, const std::string skew, const std::string na49fit, const double wmin, const double wmax);
00028 
00029    void Config(const Registry &reg);
00030 
00031    void Init();
00032 
00033    void SetParameters(std::vector<double> par);
00034       
00035    const std::vector<double>& GetParameters() {return fPar;};
00036    
00037    double GetWeight(int ptype, double pt, double pz);
00038 
00039    double GetMeanPT(int ptype) {return fMeanPT[GetParticleEnum(ptype)];};
00040    double GetReweightedMeanPT(int ptype) {return fWeightedMeanPT[GetParticleEnum(ptype)];};
00041    double GetPTshift(int ptype, double pz_low=0.,double pz_up=120.);
00042    double GetNFrac(int ptype, double pz_low=0., double pz_up=120., double pt_low=0., double pt_up=1.);
00043    TH2F* GetReweightedPTXF(int ptype) {return fWeightedPTXF[GetParticleEnum(ptype)];};
00044    TH2F* GetPTXF(int ptype) {return fPTXF[GetParticleEnum(ptype)];};
00045    TH2D* GetWeightHistogram(int ptype) {return fWeightHist[GetParticleEnum(ptype)];};
00046    TH2* GetWeightHist(const std::string &ptype);
00047       
00048    
00049    TH1* GetFlukKPiRatio() {return fFlukKPiRat;};
00050    TH1* GetPiPlusReWProj() {return fPiPlusReWProj;};
00051    TH1* GetKPlusf05Proj()  {return fKPlusf05Proj;};
00052    TH1* GetKPlusf05PipReWRatio() {return fKPlusf05PipReWRatio;};
00053 
00054 private:
00055    
00056    typedef enum EParticleType 
00057    {
00058       kPiPlus  = 8,
00059       kPiMinus = 9,
00060       kKPlus   = 11,
00061       kKMinus  = 12,
00062       kK0L     = 10,
00063       kUnknown = 0
00064    } ParticleType_t;
00065 
00066    double CalcWeight(int ptype, double pt, double pz);
00067 
00068    double GetSKZPWeight(const Lfluk::ParticleType_t particle, const double pT, const double xF);
00069    double GetSKPCWeight(const Lfluk::ParticleType_t particle, const double pT, const double xF);
00070    double GetQuadWeight(const Lfluk::ParticleType_t particle, const double pT, const double xF);
00071    double GetMeanPTWeight(const Lfluk::ParticleType_t particle, const double pT, const double xF);
00072    
00073    void SkewSKZP(const double xF, const double A, const double B, const double C, long double &Ap, long double &Bp, long double &Cp);
00074    void SkewSKPC(const double xF, const double A, const double B, const double C,
00075              const double D, const double E, double &Ap, double &Bp, double &Cp,
00076              double &Dp, double &Ep);
00077    
00078    double GetSKZPA(const Lfluk::ParticleType_t particle, double xf) const;
00079    double GetSKZPB(const Lfluk::ParticleType_t particle, double xf) const;
00080    double GetSKZPC(const Lfluk::ParticleType_t particle, double xf) const;
00081 
00082    double GetSKPCA(const Lfluk::ParticleType_t particle, double xf) const;
00083    double GetSKPCB(const Lfluk::ParticleType_t particle, double xf) const;
00084    double GetSKPCC(const Lfluk::ParticleType_t particle, double xf) const;
00085    double GetSKPCD(const Lfluk::ParticleType_t particle, double xf) const;
00086    double GetSKPCE(const Lfluk::ParticleType_t particle, double xf) const;
00087 
00088    std::string GetParticleName(Lfluk::ParticleType_t ptype); 
00089 
00090    Lfluk::ParticleType_t GetParticleEnum(const std::string &ptype);
00091    Lfluk::ParticleType_t GetParticleEnum(int ptype);
00092 
00093    void RecalculateWeights();
00094 
00095    
00096 private:
00097 
00098    std::string fParam;
00099    std::string fSkew;
00100    std::string fNA49Fit;
00101    std::string fPath;
00102 
00103    double fMinW;
00104    double fMaxW;
00105    double fKPiRatScale;
00106 
00107    bool fWghtFromHist;
00108    bool fUseFlukPi;
00109    
00110    std::vector<double> fPar;
00111    std::vector<ParticleType_t> fPlist;
00112    
00113    std::map<Lfluk::ParticleType_t, TH2F* > fPTXF;
00114    std::map<Lfluk::ParticleType_t, TH2F* > fWeightedPTXF;
00115    std::map<Lfluk::ParticleType_t, TH2D* > fWeightHist;
00116    std::map<Lfluk::ParticleType_t, double > fMeanPT;
00117    std::map<Lfluk::ParticleType_t, double > fN;
00118    std::map<Lfluk::ParticleType_t, double > fNWeighted;
00119    std::map<Lfluk::ParticleType_t, double > fWeightedMeanPT;
00120    std::map<Lfluk::ParticleType_t, int > fNBinsY,fNBinsX;
00121    
00122    //TMVA::TSpline1* fNA49pirat;
00123    TF1* fNA49pirat;
00124    std::vector<double> fPiRatio;
00125    std::vector<double> fFluka05KPiRatio;
00126    std::vector<double> fFluka05PiRatio;
00127    std::vector<double> fKPiRatio;
00128    
00129    bool isFirst;
00130    
00131    TH1 *fFlukKPiRat;
00132    TH1 *fFlukPiRat;
00133    TH1 *fPiPlusReWProj;
00134    TH1 *fKPlusf05Proj;
00135    TH1 *fKPlusf05PipReWRatio;
00136    
00137    
00138  ClassDef(Lfluk,0)
00139 };
00140 
00141 #endif

Generated on Mon Feb 15 11:06:51 2010 for loon by  doxygen 1.3.9.1