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.6 by auterman, Sat Jan 29 11:00:19 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 >   masses_file.close();
29 > }
30 >
31 > void TheLimits::match()
32   {
33    for (std::vector<SusyScan*>::iterator it=_scan.begin();it!=_scan.end();++it){
34      bool match = false;
35 <    for (std::vector<GeneratorMasses>::const_iterator gt=genm.begin();gt!=genm.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;
35 >    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          match = true;
70        }  
71      }
# Line 47 | Line 73 | void TheLimits::match(const std::vector<
73      //                      << ", M12="<<(*it)->Mhalf<<std::endl;
74    }
75   }
76 +
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 +
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 +

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines