ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/auterman/SusyScan/PlotScript/TheLimits.cc
Revision: 1.6
Committed: Sat Jan 29 11:00:19 2011 UTC (14 years, 3 months ago) by auterman
Content type: text/plain
Branch: MAIN
Changes since 1.5: +21 -0 lines
Log Message:
*** empty log message ***

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