00001 #ifndef ROOT_TFNDCUT_H
00002 #define ROOT_TFNDCUT_H
00003
00004 #include "FIN_PHYS.h"
00005
00006 using namespace FIN_PHYS;
00007
00008 class TFndCut : public TObject {
00009
00010 private:
00011
00012 Int_t fdtak_num;
00013 Double_t OsimNorm;
00014 Double_t IsimNorm;
00015 Double_t Ch1Norm;
00016 Double_t Ch2Norm;
00017
00018 public:
00019
00020 TFndCut(Int_t dtak_num);
00021 ~TFndCut();
00022
00023 Double_t Osimomkaopro(Double_t Momentum);
00024 Double_t Isimomkaopro(Double_t Momentum);
00025 Double_t Osimomprodeu(Double_t Momentum);
00026 Double_t Isimomprodeu(Double_t Momentum);
00027 Double_t Osimomdeutri(Double_t Momentum);
00028 Double_t Isimomdeutri(Double_t Momentum);
00029 Double_t Ch1momkaopro(Double_t Momentum);
00030 Double_t Ch2momkaopro(Double_t Momentum);
00031 Double_t Ch1momprodeu(Double_t Momentum);
00032 Double_t Ch2momprodeu(Double_t Momentum);
00033 Double_t Tenemomkaopro(Double_t Momentum);
00034 Double_t Tenemomprodeu(Double_t Momentum);
00035
00036
00037 };
00038
00039 R__EXTERN TFndCut * gFndCut;
00040
00041 #endif
00042
00043 TFndCut * gFndCut = NULL;
00044
00045 TFndCut::TFndCut(Int_t dtak_num){
00046 fdtak_num = dtak_num;
00047 gFndCut = this;
00048 switch (fdtak_num) {
00049 case static_cast<Int_t>(DTAK_2003_2004) :
00050 OsimNorm = 23.0;
00051 IsimNorm = 15.0;
00052 Ch1Norm = 125.0;
00053 Ch2Norm = 140.0;
00054 break;
00055 case static_cast<Int_t>(DTAK_2006_2007) :
00056 OsimNorm = 23.0;
00057 IsimNorm = 18.0;
00058 Ch1Norm = 125.0;
00059 Ch2Norm = 140.0;
00060 break;
00061 default :
00062 Warning("TFndCut","wrong dtak_num specified %d", fdtak_num);
00063 OsimNorm = 0.0;
00064 IsimNorm = 0.0;
00065 Ch1Norm = 0.0;
00066 Ch2Norm = 0.0;
00067 break;
00068 }
00069 }
00070
00071 TFndCut::~TFndCut(){
00072 gFndCut = NULL;
00073 }
00074
00075 Double_t BetheBlochSi(Double_t *x, Double_t *par){
00076 return par[0]*DedxfuncSi(x[0],par[1],par[2]);
00077 }
00078
00079 Double_t BetheBlochCh(Double_t *x, Double_t *par){
00080 return par[0]*DedxfuncCh(x[0],par[1],par[2]);
00081 }
00082
00083 Double_t TofoTotEn(Double_t *x, Double_t *par){
00084 return par[0]*Tenevsmom(x[0],par[2])-par[1];
00085 }
00086
00087 Double_t TFndCut::Isimomkaopro(Double_t Momentum){
00088 return IsimNorm*DedxfuncSi(Momentum,((GetParticleMass(FPh_PID_Proton)-GetParticleMass(FPh_PID_Kaon_plu))/3.+GetParticleMass(FPh_PID_Kaon_plu)),1);
00089 }
00090
00091 Double_t TFndCut::Isimomprodeu(Double_t Momentum){
00092 return IsimNorm*DedxfuncSi(Momentum,((GetParticleMass(FPh_PID_Deuteron)-GetParticleMass(FPh_PID_Proton))*2/3.+GetParticleMass(FPh_PID_Proton)),1);
00093 }
00094
00095 Double_t TFndCut::Isimomdeutri(Double_t Momentum){
00096 return IsimNorm*DedxfuncSi(Momentum,((2808.939-GetParticleMass(FPh_PID_Deuteron))*2/3.+GetParticleMass(FPh_PID_Deuteron)),1);
00097 }
00098
00099 Double_t TFndCut::Osimomkaopro(Double_t Momentum){
00100 return OsimNorm*DedxfuncSi(Momentum,((GetParticleMass(FPh_PID_Proton)-GetParticleMass(FPh_PID_Kaon_plu))/3.+GetParticleMass(FPh_PID_Kaon_plu)),1);
00101 }
00102
00103 Double_t TFndCut::Osimomprodeu(Double_t Momentum){
00104 return OsimNorm*DedxfuncSi(Momentum,((GetParticleMass(FPh_PID_Deuteron)-GetParticleMass(FPh_PID_Proton))*2/3.+GetParticleMass(FPh_PID_Proton)),1);
00105 }
00106
00107 Double_t TFndCut::Osimomdeutri(Double_t Momentum){
00108 return OsimNorm*DedxfuncSi(Momentum,((2808.939-GetParticleMass(FPh_PID_Deuteron))*2/3.+GetParticleMass(FPh_PID_Deuteron)),1);
00109 }
00110
00111 Double_t TFndCut::Ch1momkaopro(Double_t Momentum){
00112 return Ch1Norm*DedxfuncCh(Momentum,GetParticleMass(FPh_PID_Kaon_plu),1);
00113 }
00114
00115 Double_t TFndCut::Ch1momprodeu(Double_t Momentum){
00116 return Ch1Norm*DedxfuncCh(Momentum,((GetParticleMass(FPh_PID_Deuteron)-GetParticleMass(FPh_PID_Proton))*2/3.+GetParticleMass(FPh_PID_Proton)),1);
00117 }
00118
00119 Double_t TFndCut::Ch2momkaopro(Double_t Momentum){
00120 return Ch2Norm*DedxfuncCh(Momentum,GetParticleMass(FPh_PID_Kaon_plu),1);
00121 }
00122
00123 Double_t TFndCut::Ch2momprodeu(Double_t Momentum){
00124 return Ch2Norm*DedxfuncCh(Momentum,((GetParticleMass(FPh_PID_Deuteron)-GetParticleMass(FPh_PID_Proton))*2/3.+GetParticleMass(FPh_PID_Proton)),1);
00125 }
00126
00127 Double_t TFndCut::Tenemomkaopro(Double_t Momentum){
00128 return 2.54*Tenevsmom(Momentum,((GetParticleMass(FPh_PID_Proton)-GetParticleMass(FPh_PID_Kaon_plu))*1./2.+GetParticleMass(FPh_PID_Kaon_plu)))-122.81;
00129 }
00130
00131 Double_t TFndCut::Tenemomprodeu(Double_t Momentum){
00132 return 2.91*Tenevsmom(Momentum,((GetParticleMass(FPh_PID_Deuteron)-GetParticleMass(FPh_PID_Proton))*2./3.+GetParticleMass(FPh_PID_Proton)))-190.88;
00133 }
00134