26 std::cout <<
"Can't calculate n! for n>79" << std::endl;
29 std::cout <<
"Can't calculate n! for n<0" << std::endl;
32 for (
int i = 1; i <= n; ++i) {
33 fac = fac * (double)i / 10.0;
68 if ( event != 1 ) {
return; }
69 TCanvas *c = (TCanvas*)gTQSender;
72 cx = c->AbsPixeltoX(x);
73 cy = c->AbsPixeltoY(y);
79 c->GetRangeAxis(xmin, ymin, xmax, ymax);
85 TMarker *marker =
new TMarker(
cx,
cy, 0);
92 TCanvas *c = (TCanvas*)gTQSender;
96 line->SetPoint(n-1, c->AbsPixeltoX(x), c->AbsPixeltoY(y));
101 if ( event != 1 ) {
return; }
104 cx = c->AbsPixeltoX(x);
105 cy = c->AbsPixeltoY(y);
116 c->GetRangeAxis(xmin, ymin, xmax, ymax);
122 TMarker *marker =
new TMarker(
cx,
cy, 0);
127 int Clicker::GetClicks(TVirtualPad *canvas,
int n, std::vector<std::string> &messages,
int draw,
int print) {
130 line->SetLineColor(kRed);
131 line->SetMarkerStyle(kFullCircle);
132 line->SetMarkerColor(kRed);
133 line->Draw(
"same LP");
138 canvas->Connect(
"ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
"GamR::Utils::Clicker",
this,
"GetDrawClick(Int_t,Int_t,Int_t,TObject*)");
141 canvas->Connect(
"ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
"GamR::Utils::Clicker",
this,
"GetClick(Int_t,Int_t,Int_t,TObject*)");
148 if (n>0 && i>=n) {
break; }
149 if (exit == 1 ) {
break; }
150 if (n>0 && i<messages.size()) {
151 std::cout << messages[i] << std::endl;
153 else if (n<=0 && messages.size()>0 ) {
154 std::cout << messages[0] << std::flush;
158 obj = canvas->WaitPrimitive();
159 if (!obj) { exit = 1;
break; }
160 if (strncmp(obj->ClassName(),
"TMarker",7)==0) {
165 std::cout <<
"(" <<
cx <<
"," <<
cy <<
")" << std::endl;
174 canvas->Disconnect(
"ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
this,
"GetDrawClick(Int_t,Int_t,Int_t,TObject*)");
177 canvas->Disconnect(
"ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
this,
"GetClick(Int_t,Int_t,Int_t,TObject*)");
185 TList *list = canvas->GetListOfPrimitives();
186 for (
int i = 0; i < list->GetEntries(); i++) {
187 if (strncmp(list->At(i)->ClassName(),
"TH1", 3) == 0) {
189 hist = (TH1D *)list->At(i);
206 std::vector<TH1D*> hists;
207 TList *list = canvas->GetListOfPrimitives();
208 for (
int i = 0; i < list->GetEntries(); i++) {
209 if (strncmp(list->At(i)->ClassName(),
"TH1", 3) == 0) {
210 hists.push_back((TH1D *)list->At(i));
214 if (hists.size() == 0) {
224 TList *list = canvas->GetListOfPrimitives();
225 for (
int i = 0; i < list->GetEntries(); i++) {
226 if (strncmp(list->At(i)->ClassName(),
"TH2", 3) == 0) {
227 hist = (TH2D *)list->At(i);
241 int wrresult(
char *out,
float value,
float err,
int minlen)
251 c = out + strlen(out);
252 if (err < 0.00005f) {
253 sprintf(c,
" %.4f", value);
254 c = out + strlen(out);
255 while (*(c - 1) ==
'0' && *(c - 2) ==
'0')
258 }
else if (err < 0.0025f) {
259 sprintf(c,
" %.4f(%.0f)", value, err * 10000.0f);
260 }
else if (err < 0.025f) {
261 sprintf(c,
" %.3f(%.0f)", value, err * 1000.0f);
262 }
else if (err < 0.25f) {
263 sprintf(c,
" %.2f(%.0f)", value, err * 100.0f);
264 }
else if (err < 2.5f) {
265 sprintf(c,
" %.1f(%.0f)", value, err * 10.0f);
267 sprintf(c,
" %.0f(%.0f)", value, err);
269 for (n = strlen(out); n < minlen; n++) {
278 wrresult(out_char, value, error, 0);
279 std::string out(out_char);
286 char *inp =
new char[80];
287 for(
int x=0;x<80;x++) inp[x] =
' ';
290 for(
int x=0;x<strin.size();x++) inp[x] = strin[x];
294 for(
int x=0;x<80;x++) inp[x] = strin[x];
301 double Simps(
double *y,
int n,
double dx)
305 for(
int i=1; i<n; i++) yint += y[i] *
double(i%2 + 1) * 2.;
310 std::complex<double> **
Simps(std::complex<double> ***rho,
int n,
double dx)
312 std::complex<double> **rhoint =
new std::complex<double>*[3];
313 for(
int k=0; k<3; k++) rhoint[k] = new std::complex<double>[5];
314 for(
int k=0; k<3; k++)
316 for(
int q=0; q<=k*2; q++) {
317 rhoint[k][q] = std::complex<double>(0,0);
318 rhoint[k][q] = rho[0][k][q] + rho[n][k][q];
319 for(
int i=1; i<n; i++) {
320 rho[i][k][q] *= double(i%2 + 1) * 2.;
321 rhoint[k][q] += rho[i][k][q];
323 rhoint[k][q] *= dx/3.;
332 if(f.fail())
return "";
340 int catcherr(std::string inp,
double &val,
bool require_positive ) {
341 try { val = std::stod(inp); }
342 catch(
const std::invalid_argument& ia) {
343 std::cout <<
"\tInvalid entry. Must be numerical." << std::endl;
346 if(val<0 && require_positive) {
347 std::cout <<
"\tInvalid entry. Must be >0." << std::endl;
353 int catcherr(std::string inp,
float &val,
bool require_positive ) {
354 try { val = std::stof(inp); }
355 catch(
const std::invalid_argument& ia) {
356 std::cout <<
"\tInvalid entry. Must be numerical." << std::endl;
359 if(val<0 && require_positive) {
360 std::cout <<
"\tInvalid entry. Must be >0." << std::endl;
366 int catcherr(std::string inp,
int &val,
bool require_positive ) {
367 try { val = std::stoi(inp); }
368 catch(
const std::invalid_argument& ia) {
369 std::cout <<
"\tInvalid entry. Must be numerical." << std::endl;
372 if(val<0 && require_positive) {
373 std::cout <<
"\tInvalid entry. Must be >0." << std::endl;
379 int GetInput(std::string prompt,
double &val,
bool require_positive ) {
382 std::cout << prompt <<
" [" << val <<
"]: ";
383 std::getline(std::cin, inp);
384 if(inp.empty()) {
break; }
385 if(!
catcherr(inp, val, require_positive)) {
break; }
390 int GetInput(std::string prompt,
float &val,
bool require_positive ) {
393 std::cout << prompt <<
" [" << val <<
"]: ";
394 std::getline(std::cin, inp);
395 if(inp.empty()) {
break; }
396 if(!
catcherr(inp, val, require_positive)) {
break; }
400 int GetInput(std::string prompt,
int &val,
bool require_positive ) {
403 std::cout << prompt <<
" [" << val <<
"]: ";
404 std::getline(std::cin, inp);
405 if(inp.empty()) {
break; }
406 if(!
catcherr(inp, val, require_positive)) {
break; }
416 TIter next(pad->GetListOfPrimitives());
417 while ((obj = next())) {
418 if (obj->InheritsFrom(TVirtualPad::Class())) npads++;
void GetClick(Int_t, Int_t, Int_t, TObject *)
void GetDrawClick(Int_t, Int_t, Int_t, TObject *)
int GetClicks(TVirtualPad *canvas, int n, std::vector< std::string > &messages, int draw=0, int print=0)
std::string getline(std::ifstream &f)
int GetNPads(TVirtualPad *pad)
TH1D * GetHist1D(TVirtualPad *canvas)
char * c_to_f_str(std::string strin)
std::vector< TH1D * > GetHists1D(TVirtualPad *canvas)
int wrresult(char *out, float value, float err, int minlen)
double Simps(double *y, int n, double dx)
int catcherr(std::string inp, double &val, bool require_positive)
TH2D * GetHist2D(TVirtualPad *canvas)
int GetInput(std::string prompt, double &val, bool require_positive)