3 TH1F* makeToySpin(
int nEvents=10000,
4 float AL=-.25,
float P1=0.35,
float P2=0.25,
5 float AN=0.,
float dQ1=0.0,
float dQ2=0.0,
10 n[0]=1 +AL*P1 +AL*P2 +AN*dQ1 -AN*dQ2 +ALL*P1*P2;
11 n[1]=1 +AL*P1 -AL*P2 +AN*dQ1 +AN*dQ2 -ALL*P1*P2;
12 n[2]=1 -AL*P1 +AL*P2 -AN*dQ1 -AN*dQ2 -ALL*P1*P2;
13 n[3]=1 -AL*P1 -AL*P2 -AN*dQ1 +AN*dQ2 +ALL*P1*P2;
16 float prob[4], total_prob, cumulative_prob[4];
19 prob[i]=n[i]/(n[0]+n[1]+n[2]+n[3]);
21 printf(
"i=%d prob=%f\n",i, prob[i]);
22 cumulative_prob[i]=total_prob;
25 for (
int i=0,;i<4;i++)
30 TRandom3 *rand=
new TRandom3(t);
33 sprintf(tit,
"toy spin4 : AL=%.2f P1=%.2f P2=%.2f AN=%.2f dQ1=%.2f dQ2=%.2f ALL=%.2f;spin4 state;counts",AL,P1,P2,AN,dQ1,dQ2,ALL);
35 TH1F* toySpin=
new TH1F(
"toySpin4",tit,16,-0.5,15.5);
37 for (
int i=0;i<nEvents;i++)
39 float rnd=rand->Rndm();
40 if (rnd<cumulative_prob[0]) toySpin->Fill(10);
41 else if (rnd<cumulative_prob[1]) toySpin->Fill(9);
42 else if (rnd<cumulative_prob[2]) toySpin->Fill(6);
43 else if (rnd<cumulative_prob[3]) toySpin->Fill(5);
48 TFile *output=
new TFile (
"toySpin.hist.root",
"RECREATE");