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.3 by auterman, Sat Nov 27 12:03:26 2010 UTC vs.
Revision 1.7 by auterman, Wed Feb 9 08:51:32 2011 UTC

# Line 2 | Line 2
2   #include "SusyScan.h"
3   #include "GeneratorMasses.h"
4  
5 < void TheLimits::match(const std::vector<GeneratorMasses> genm)
5 > #include <fstream>
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   {
34    for (std::vector<SusyScan*>::iterator it=_scan.begin();it!=_scan.end();++it){
35      bool match = false;
36 <    for (std::vector<GeneratorMasses>::const_iterator gt=genm.begin();gt!=genm.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;
36 >    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          match = true;
71        }  
72      }
# Line 47 | Line 74 | void TheLimits::match(const std::vector<
74      //                      << ", M12="<<(*it)->Mhalf<<std::endl;
75    }
76   }
77 +
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 +
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 +

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines