The method used to generate events and format output.
This member creates all out directories that might be needed in case the output is stored on disk. Output on disk is generated as follows:
54 throw std::runtime_error(
"\nGenerateEvent::generate():\n--noMC was not specified as an argument.\nPlease do so for running in Generate Event mode.\n");
61 gRandom->SetSeed(seed * ( seed +
rank *
procnum + nameLen));
63 gRandom->SetSeed(seed);
89 buff =
new double*[1];
90 buff[0] =
new double[1];
99 while (rem_iteration > 0) {
101 if (
rank < rem_iteration){
103 for (boost::ptr_vector<Observable>::iterator it =
Obs.begin(); it <
Obs.end(); it++) {
104 if (it->getObsType().compare(
"HiggsObservable") != 0) {
110 double hw = it->computeWeight();
111 std::vector<double> theoryValues;
112 it->getTheoryValues(theoryValues);
113 for (
int j = 0; j < it->getNTheoryValues() + 1 + it->getNChannels(); j++) {
120 for (std::vector<CorrelatedGaussianObservables>::iterator it1 =
CGO.begin(); it1 <
CGO.end(); it1++) {
121 std::vector<Observable> ObsInCGO = it1->getObs();
122 for (std::vector<Observable>::iterator it2 = ObsInCGO.begin(); it2 < ObsInCGO.end(); it2++) {
151 for (
int iproc = 0; iproc <
procnum; iproc++) {
154 for (std::vector<ModelParameter>::iterator it =
ModParsVar.begin(); it <
ModParsVar.end(); it++) {
158 if (
outputTerm == 0 && itno != 0) std::cout <<
"\nEvent No.: " << itno++ << std::endl;
159 else if (
outputTerm == 0 && itno++ == 0) std::cout <<
"\nThe central event is: " << std::endl;
160 if (
outputTerm == 0 &&
Obs.size() > 0) std::cout <<
"\nObservables: \n" << std::endl;
161 for (boost::ptr_vector<Observable>::iterator it =
Obs.begin(); it <
Obs.end(); it++) {
162 if (it->getObsType().compare(
"HiggsObservable") != 0) {
164 if (
weight && it->getDistr().compare(
"noweight") != 0) std::cout << it->getName() <<
" = " <<
buff[iproc][
positionID] <<
" (weight: " <<
buff_w[iproc][
positionID] <<
")" << std::endl;
165 else std::cout << it->getName() <<
" = " <<
buff[iproc][
positionID] << std::endl;
174 if (
weight) std::cout <<
"\n" << it->getName() <<
" :" <<
" (weight: " <<
buff_w[iproc][
positionID] <<
")" << std::endl;
175 else std::cout <<
"\n" << it->getName() <<
" :" << std::endl;
176 for (
int i = 0; i < it->getNTheoryValues(); i++) {
177 std::cout <<
" sigma(" << i + 1 <<
") = " <<
buff[iproc][
positionID] << std::endl;
182 for (
int i = it->getNTheoryValues() + 1; i < it->getNTheoryValues() + 1 + it->getNChannels(); i++) {
183 std::cout <<
" mu(" << i - (it->getNTheoryValues() + 1) + 1 <<
") = " <<
buff[iproc][
positionID] << std::endl;
187 for (
int i = 0; i < it->getNTheoryValues(); i++) {
193 for (
int i = it->getNTheoryValues() + 1; i < it->getNTheoryValues() + 1 + it->getNChannels(); i++) {
194 (*
ObsOut[it->getName()]) << std::setw(10) << std::left << buff[iproc][
positionID];
198 (*
ObsOut[it->getName()]) << std::endl;
202 if (
outputTerm == 0 &&
CGO.size() > 0) std::cout <<
"\nCorrelated Gaussian Observables: \n" << std::endl;
203 for (std::vector<CorrelatedGaussianObservables>::iterator it1 =
CGO.begin(); it1 <
CGO.end(); it1++) {
205 if (
weight && !(it1->isPrediction())) std::cout << it1->getName() <<
": (weight: " <<
buff_w[iproc][
positionID] <<
")" << std::endl;
206 else std::cout << it1->getName() << std::endl;
208 std::vector<Observable> ObsInCGO = it1->getObs();
209 for (std::vector<Observable>::iterator it2 = ObsInCGO.begin(); it2 < ObsInCGO.end(); it2++) {
211 if (
weight && it2->getDistr().compare(
"noweight") != 0) std::cout << it2->getName() <<
" = " << buff[iproc][
positionID] << std::endl;
212 else std::cout << it2->getName() <<
" = " << buff[iproc][
positionID] << std::endl;
215 if (
weight && it2->getDistr().compare(
"noweight") != 0) (*
CGOOut[it1->getName()]) << buff[iproc][
positionID] <<
"\t";
229 for(
int iproc = 0; iproc <
procnum; iproc++){
230 it_comp = std::max(it_comp,
buff_int[iproc][0]);
232 rem_iteration -= it_comp;
237 for (std::vector<ModelParameter>::iterator it =
ModParsVar.begin(); it <
ModParsVar.end(); it++) {
238 ParsOut[it->getname()]->close();
240 for (boost::ptr_vector<Observable>::iterator it =
Obs.begin(); it <
Obs.end(); it++){
241 ObsOut[it->getName()]->close();
243 for (std::vector<CorrelatedGaussianObservables>::iterator it1 =
CGO.begin(); it1 <
CGO.end(); it1++){
244 CGOOut[it1->getName()]->close();
248 std::cout <<
"Output written to: " <<
OutDirName <<
"\n" << std::endl;
250 if (
rank == 0) std::cout << std::endl;
253 }
catch (std::string message) {
254 std::cerr << message << std::endl;
bool outputTerm
Flag to specify output stream storage.
void generateRandomEvent(int iterationNo)
This member generates random numbers for the parameters being varied in the model. The first set is always the central value of the parameter.
void defineParameterDistributions()
The parameter distributions as specified in SomeModel.conf is defined here.
std::map< std::string, boost::shared_ptr< std::ofstream > > ParsOut
Map of output stream for parameters.
boost::ptr_vector< Observable > Obs
Vector for the observables defined in SomeModel.conf.
std::string OutDirName
String for the name of the output directory.
std::vector< CorrelatedGaussianObservables > CGO
vector for the Correlated Gaussian Observables defined in SomeModel.conf.
bool noMC
Flag to initiate noMC mode.
std::map< std::string, boost::shared_ptr< std::ofstream > > ObsOut
Map of output stream for observables.
std::vector< ModelParameter > ModParsVar
Vector for the model parameters varied in SomeModel.conf.
std::map< std::string, boost::shared_ptr< std::ofstream > > CGOOut
Map of output stream for corellated Gaussian observables.