ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/auterman/SusyScan/PlotScript/TheLimits.cc
Revision: 1.7
Committed: Wed Feb 9 08:51:32 2011 UTC (14 years, 3 months ago) by auterman
Content type: text/plain
Branch: MAIN
Changes since 1.6: +1 -0 lines
Log Message:
adding executables for tb3 and tb50

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