Research Links
http://www.sciencedirect.com/science/article/pii/0370269376906766
http://users.physik.fu-berlin.de/~kleinert/53/53.pdf
http://journals.aps.org/prd/pdf/10.1103/PhysRevD.11.1094
2/10/2015
Prior issue with TBrowser resolved by checking off X11 forwarding in deep, obscure menu within putty
----------------------------------------
Mass leaf added by examining the structure of pythiaTree.cc.
Add another 5000-point array for the mass.
Where all of the branches are initialized, create another branch with t1->Branch(); Model the arguments after the existing branches and the name you assigned your array.
The method that pulls the mass from pythia is pythia.event[i].m(); Setting this equal to M[nTot-1], as the prior lines do for the other branches, populates the mass branch with each particle's mass.
After that, the mass branch appears as a histogram in TBrowser with no further coding.
---------------------------------------------
Increasing the events number is achieved by simply changing the upper bound of the event for loop. The beginning of the loops is labeled by pre-existing comments.
--------------------------------------
To switch pythia over to ZZ collisions, replace the all of the pythia.readString(); tags with the following:
pythia.readString("NewGaugeBoson:ffbar2gmZZprime = on");
pythia.readString("32:m0 = 150.");
pythia.readString("32:mMin = 90.");
pythia.readString("32:mMax = 300.");
pythia.readString("PhaseSpace:mHatMin = 20. ");
pythia.readString("Zprime:gmZmode = 3");
pythia.readString("Beams:eCM = 14000.");
pythia.readString("32:onMode = off");
pythia.readString("32:onIfAny = 11");
Do not remove the pythia.init();, otherwise the program will not start the even loops.
To save the masses of the two electrons with the most pT, initialize additional variables pT1 and 2, and mass 1 and 2. These will save the momentae and masses of the electrons. Then, following the form present in the program, initialize another histogram (TH1F) (i called it mass) to display the masses of the particles. The last two arguments are the minimum and maximum values, and should be from 0 to about 3000.
To identify the desired electrons, start with pulling the pT of the current examined electron with pythia.event[i].pt(); and saving it as a variable (i used particlePT). Then add an if statement that checks if a particle is an electron. pythia.event[i].id(); pulls particle identities, and returns either 11 or -11 if the particle is an electron. Placing the || symbol serves as an or statement, returning true in both cases. Remember that == is the statement for checking for equality.
Once an electron has been identified, another if statement is used to check if the electron has a high pT. First, compare the pT of the current electron with pT1, which is the greatest pT of the electrons. If the pT is greater, then the pT1 is switched to pT2, mass 1 moved to mass2, particlePT is saved as the new pT1, and mass1 is given the value of pythia.event[i].m();. The statements must go in that order, so that the old greatest pT is moved to the second position, and the new greatest pT is placed in the first position, with the old second position being dropped. After that, add an elseif statement that checks if the current pT is greater than pT2. The original if has acted on all pT greater than pT1, so any remaining events greater than pT2 are between pT1 and pT2. After the elseif, save particlePT as pT2 and mass2 as pythia.event[i].m();.
All that remains is to fill the histogram. These are the last statements before the end of the event loop. The fill should be the sum of the two electrons' momentae, as they constitute most of the energy from the collision. Follow the statement structure that is already there, with pT1 + pT2 as Fill();'s argument.
Finally, find the statements where the histograms are written. They should look like t1->Write();. Add a write statement using the name of the histogram you created for the mass. (Remember to do this, otherwise the histogram will not appear in TBrowser! This left me confused for hours)
---------------------------------------
The number of Z' is found by multiplying the luminosity of the beam by the cross section of the collision that produced Z'. 20 fb-1 means that 20^15 events (collisions) occur in every barn (very tiny area) of the beam. The cross section values for the event type tracked by pythia is the last box displayed by more output.txt. It should be in millibarns. Run pythiaTree and view the output. The final box will have a label f fbar -> gamma*/Z0/Zprime0, with the sigma value on the extreme right. After that, simply multiply it by 20 fb-1.
*Note* match your units! Millibarns are 10^-3, and fb-1 is 10^15 (it is large because if is 1/10^-15 barns).
The cross section for the background is found by replacing the pythia.readString(); tags with the ones that track DY events:
pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
pythia.readString("PhaseSpace:mHatMin = 20. ");
pythia.readString("Beams:eCM = 14000.");
pythia.readString("23:onMode = off");
pythia.readString("23:onIfAny = 11");
Then check the cross section again, and do the same calculation.
For the ratio of signal to background, divide the number of Z' by the number of DY events.
--------------------------------------------------
In order to add cuts, add an if statement that increments a new variable (using ++) whenever the total momentum fulfills the cut conditions. The program then displays the number of maintained events using cout at the end of the program. For the graphs, changing the bounds of the histogram would remove the cut events. The cut I used was removing everything below 300 GeV.