ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/auterman/SusyScan/PlotScript/TheLimits.cc
(Generate patch)

Comparing UserCode/auterman/SusyScan/PlotScript/TheLimits.cc (file contents):
Revision 1.4 by auterman, Sat Nov 27 12:22:28 2010 UTC vs.
Revision 1.9 by auterman, Fri May 20 07:39:34 2011 UTC

# Line 6 | Line 6
6   #include <iostream>
7   #include <cmath>
8  
9 + 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 +   //std::cout << filelist << ": "<< _scan.size() <<std::endl;
29 +   masses_file.close();
30 + }
31  
32   void TheLimits::match()
33   {
# Line 97 | Line 119 | void TheLimits::FillGeneratorMasses(std:
119                    >> p->MHp;
120  
121        if (!masses_file.good()) break;
122 +      //std::cout << p->Mzero<<", "<<p->Mhalf<<", "<<p->TanBeta<<std::endl;
123        if (fabs(p->Mu)!=1.) {
124           std::cerr << "check lines near m0=" << p->Mzero << ", m1/2=" << p->Mhalf << std::endl;
125           break;
# Line 104 | Line 127 | void TheLimits::FillGeneratorMasses(std:
127        _masses.push_back( p );
128     }
129   }
130 +
131 +
132 + void TheLimits::OverwriteLimits(std::string flag)
133 + {
134 +  for (std::vector<SusyScan*>::iterator it=_scan.begin();it!=_scan.end();++it){
135 +    if (flag=="ABCD_MHT") {
136 +      (*it)->ExpNsigLimit = 17.85;
137 +      (*it)->PLExpNsigLimit = 12.558;
138 +      (*it)->FCExpNsigLimit = 15.75;
139 +      (*it)->MCMCExpNsigLimit = 15.8085;
140 +      (*it)->ObsNsigLimit = 10.0637;
141 +      (*it)->PLObsNsigLimit = 4.22124;
142 +      (*it)->FCObsNsigLimit  = 0.75;
143 +      (*it)->MCMCObsNsigLimit  = 8.75403;
144 +    }
145 +    else if (flag=="ABCD_HT") {
146 +      (*it)->ExpNsigLimit = 24.0438;
147 +      (*it)->PLExpNsigLimit = 17.8537;
148 +      (*it)->FCExpNsigLimit = 22.05;
149 +      (*it)->MCMCExpNsigLimit = 20.781;
150 +      (*it)->ObsNsigLimit    = 18.24;
151 +      (*it)->PLObsNsigLimit = 9.70375;
152 +      (*it)->FCObsNsigLimit  = 11.85;
153 +      (*it)->MCMCObsNsigLimit  = 14.34;
154 +    }
155 +    
156 +    
157 +      (*it)->ExpXsecLimit    = (*it)->ExpNsigLimit * (*it)->Xsection / (*it)->signal;
158 +      (*it)->PLExpXsecLimit  = (*it)->PLExpNsigLimit  * (*it)->Xsection / (*it)->signal;
159 +      (*it)->FCExpXsecLimit  = (*it)->FCExpNsigLimit  * (*it)->Xsection / (*it)->signal;
160 +      (*it)->MCMCExpXsecLimit= (*it)->MCMCExpNsigLimit  * (*it)->Xsection / (*it)->signal;
161 +      (*it)->ObsXsecLimit    = (*it)->ObsNsigLimit  * (*it)->Xsection / (*it)->signal;
162 +      (*it)->PLObsXsecLimit  = (*it)->PLObsNsigLimit  * (*it)->Xsection / (*it)->signal;
163 +      (*it)->FCObsXsecLimit  = (*it)->FCObsNsigLimit   * (*it)->Xsection / (*it)->signal;
164 +      (*it)->MCMCObsXsecLimit= (*it)->MCMCObsNsigLimit  * (*it)->Xsection / (*it)->signal;
165 +    
166 +  
167 +  }
168 +
169 +
170 + }
171 +
172 + void TheLimits::ExpandGrid(int s)
173 + {
174 +  std::vector<SusyScan*> new_grid;
175 +  for (std::vector<SusyScan*>::iterator it=_scan.begin(); it!=_scan.end(); ++it){
176 +    double x=9999, y=9999;
177 +    std::vector<SusyScan*>::iterator next_x=_scan.end(), next_y=_scan.end();
178 +    for (std::vector<SusyScan*>::iterator nx=_scan.begin(); nx!=_scan.end(); ++nx)
179 +      if ((*it)->Mzero<(*nx)->Mzero && fabs((*it)->Mzero-(*nx)->Mzero)<x) {
180 +        x=fabs((*it)->Mzero-(*nx)->Mzero);
181 +        next_x=nx;
182 +      }
183 +    for (std::vector<SusyScan*>::iterator ny=_scan.begin(); ny!=_scan.end(); ++ny)
184 +      if ( (*it)->Mzero==(*ny)->Mzero && (*it)->Mhalf<(*ny)->Mhalf && fabs((*it)->Mhalf-(*ny)->Mhalf)<y) {
185 +        y=fabs((*it)->Mhalf-(*ny)->Mhalf);
186 +        next_y=ny;
187 +      }
188 +    if (next_y!=_scan.end()) {  
189 +        SusyScan*  n = new SusyScan((**it + **next_y) * 0.5);
190 +        new_grid.push_back( n );
191 +        //std::cout
192 +        //<< "l:"<<(*it)->Mzero<<","<<(*it)->Mhalf
193 +        //<< " <>"<<    n->Mzero<<","<<n->Mhalf
194 +        //<< " <> r:"<<(*next_y)->Mzero<<","<<(*next_y)->Mhalf
195 +        //<<std::endl;
196 +    }  
197 +      
198 +  }
199 +  _scan.insert(_scan.end(), new_grid.begin(), new_grid.end());
200 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines