ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/auterman/SusyScan/PlotScript/TheLimits.cc
Revision: 1.5
Committed: Wed Jan 26 15:23:05 2011 UTC (14 years, 3 months ago) by auterman
Content type: text/plain
Branch: MAIN
Changes since 1.4: +42 -0 lines
Log Message:
A lot of improvements

File Contents

# User Rev Content
1 auterman 1.1 #include "TheLimits.h"
2     #include "SusyScan.h"
3     #include "GeneratorMasses.h"
4    
5 auterman 1.4 #include <fstream>
6     #include <iostream>
7     #include <cmath>
8    
9    
10     void TheLimits::match()
11 auterman 1.1 {
12     for (std::vector<SusyScan*>::iterator it=_scan.begin();it!=_scan.end();++it){
13     bool match = false;
14 auterman 1.4 for (std::vector<GeneratorMasses*>::const_iterator gt=_masses.begin();gt!=_masses.end();++gt){
15     if ((*it)->Mzero==(*gt)->Mzero &&
16     (*it)->Mhalf==(*gt)->Mhalf &&
17     (*it)->Azero==(*gt)->Azero &&
18     (*it)->TanBeta==(*gt)->TanBeta &&
19     (*it)->Mu==(*gt)->Mu ) {
20     (*it)->M1 = (*gt)->M1;
21     (*it)->M2 = (*gt)->M2;
22     (*it)->M3 = (*gt)->M3;
23     (*it)->MGL = (*gt)->MGL;
24     (*it)->MUL = (*gt)->MUL;
25     (*it)->MB1 = (*gt)->MB1;
26     (*it)->MSN = (*gt)->MSN;
27     (*it)->MNTAU = (*gt)->MNTAU;
28     (*it)->MZ1 = (*gt)->MZ1;
29     (*it)->MW1 = (*gt)->MW1;
30     (*it)->MHL = (*gt)->MHL;
31     (*it)->MUR = (*gt)->MUR;
32     (*it)->MB2 = (*gt)->MB2;
33     (*it)->MEL = (*gt)->MEL;
34     (*it)->MTAU1 = (*gt)->MTAU1;
35     (*it)->MZ2 = (*gt)->MZ2;
36     (*it)->MW2 = (*gt)->MW2;
37     (*it)->MHH = (*gt)->MHH;
38     (*it)->MDL = (*gt)->MDL;
39     (*it)->MT1 = (*gt)->MT1;
40     (*it)->MER = (*gt)->MER;
41     (*it)->MTAU2 = (*gt)->MTAU2;
42     (*it)->MZ3 = (*gt)->MZ3;
43     (*it)->MHA = (*gt)->MHA;
44     (*it)->MDR = (*gt)->MDR;
45     (*it)->MT2 = (*gt)->MT2;
46     (*it)->MZ4 = (*gt)->MZ4;
47     (*it)->MHp = (*gt)->MHp;
48 auterman 1.1 match = true;
49     }
50     }
51     //if (!match) std::cout << "No match for M0="<<(*it)->Mzero
52     // << ", M12="<<(*it)->Mhalf<<std::endl;
53     }
54     }
55 auterman 1.4
56     void TheLimits::FillGeneratorMasses(std::string file)
57     {
58     std::ifstream masses_file;
59     masses_file.open(file.c_str());
60     while (1) {
61     GeneratorMasses * p = new GeneratorMasses;
62     masses_file >> p->Mzero
63     >> p->Mhalf
64     >> p->TanBeta
65     >> p->Mu
66     >> p->Azero
67     >> p->Mtop
68     >> p->muQ
69     >> p->Q
70     >> p->M1
71     >> p->M2
72     >> p->M3
73     >> p->MGL
74     >> p->MUL
75     >> p->MB1
76     >> p->MSN
77     >> p->MNTAU
78     >> p->MZ1
79     >> p->MW1
80     >> p->MHL
81     >> p->MUR
82     >> p->MB2
83     >> p->MEL
84     >> p->MTAU1
85     >> p->MZ2
86     >> p->MW2
87     >> p->MHH
88     >> p->MDL
89     >> p->MT1
90     >> p->MER
91     >> p->MTAU2
92     >> p->MZ3
93     >> p->MHA
94     >> p->MDR
95     >> p->MT2
96     >> p->MZ4
97     >> p->MHp;
98    
99     if (!masses_file.good()) break;
100     if (fabs(p->Mu)!=1.) {
101     std::cerr << "check lines near m0=" << p->Mzero << ", m1/2=" << p->Mhalf << std::endl;
102     break;
103     }
104     _masses.push_back( p );
105     }
106     }
107 auterman 1.5
108    
109     void TheLimits::OverwriteLimits(std::string flag)
110     {
111     for (std::vector<SusyScan*>::iterator it=_scan.begin();it!=_scan.end();++it){
112     if (flag=="ABCD_MHT") {
113     (*it)->ExpNsigLimit = 17.85;
114     (*it)->PLExpNsigLimit = 12.558;
115     (*it)->FCExpNsigLimit = 15.75;
116     (*it)->MCMCExpNsigLimit = 15.8085;
117     (*it)->ObsNsigLimit = 10.0637;
118     (*it)->PLObsNsigLimit = 4.22124;
119     (*it)->FCObsNsigLimit = 0.75;
120     (*it)->MCMCObsNsigLimit = 8.75403;
121     }
122     else if (flag=="ABCD_HT") {
123     (*it)->ExpNsigLimit = 24.0438;
124     (*it)->PLExpNsigLimit = 17.8537;
125     (*it)->FCExpNsigLimit = 22.05;
126     (*it)->MCMCExpNsigLimit = 20.781;
127     (*it)->ObsNsigLimit = 18.24;
128     (*it)->PLObsNsigLimit = 9.70375;
129     (*it)->FCObsNsigLimit = 11.85;
130     (*it)->MCMCObsNsigLimit = 14.34;
131     }
132    
133    
134     (*it)->ExpXsecLimit = (*it)->ExpNsigLimit * (*it)->Xsection / (*it)->signal;
135     (*it)->PLExpXsecLimit = (*it)->PLExpNsigLimit * (*it)->Xsection / (*it)->signal;
136     (*it)->FCExpXsecLimit = (*it)->FCExpNsigLimit * (*it)->Xsection / (*it)->signal;
137     (*it)->MCMCExpXsecLimit= (*it)->MCMCExpNsigLimit * (*it)->Xsection / (*it)->signal;
138     (*it)->ObsXsecLimit = (*it)->ObsNsigLimit * (*it)->Xsection / (*it)->signal;
139     (*it)->PLObsXsecLimit = (*it)->PLObsNsigLimit * (*it)->Xsection / (*it)->signal;
140     (*it)->FCObsXsecLimit = (*it)->FCObsNsigLimit * (*it)->Xsection / (*it)->signal;
141     (*it)->MCMCObsXsecLimit= (*it)->MCMCObsNsigLimit * (*it)->Xsection / (*it)->signal;
142    
143    
144     }
145    
146    
147     }
148