// A program to test the keep-on-looking effect // Glen Cowan // RHUL Physics // 26 September, 2011 #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { TFile* file = new TFile("sequential.root", "recreate"); TH1D* h_p = new TH1D("h_p", "p-value", 200, 0., 1.); int seed = 12345; TRandom3* ran = new TRandom3(seed); double alpha; cout << "enter alpha: "; cin >> alpha; int nstepMax = 32; for (int nstep = 1; nstep <= nstepMax; nstep *= 2){ double btot = 32.; double db = btot / static_cast(nstep); int ndisc = 0; int nexp = 1000000; // cout << "enter number of experiments: "; // cin >> nexp; for (int i=0; iPoisson(db); n += dn; double pval; if ( n == 0 ) { pval = 1.; } else { pval = 1 - TMath::Prob(2*b, 2*n); } if ( pval < alpha ){ discovery = true; ndisc++; } } } double discoveryRate = static_cast(ndisc) / static_cast(nexp); double ddR = sqrt(ndisc)/static_cast(nexp); // approx double Z = TMath::NormQuantile(1. - discoveryRate); cout << nstep << " " << discoveryRate << " " << ddR << " " << Z << endl; } file->Write(); file->Close(); return 0; }