Summer Project: Measure of the radius of the top -- JorgeMartinezArmas - 2016-06-24
This is a little blog about the things I have done for my summer project of measuring the radius of the top.
Important webs to keep in mind
Until my second week,
-
- Right now, I am using ntuples generated by MadGraph. These ntuples vary the anomalous top radius and anomalous electric dipole.
-
- I am focusing my attention in boosted tops (pt>30 GeV) in the lepton channel (t->W+b, W-> l+v).
-
- I am looking in different discriminating variables which can be useful for the analysis. We expect changes in the cross-section and also in angular variables.
-
- Normal angular variables haven't been so useful so far because they didn't seems to have enough discriminator power.
-
- So far, with the help of TMVA, the normal variables used so far (phi, eta, pt of the bjeta-lepton with the higher pt and lower pt) haven't given any valuable work.
-
- The most promising variables seem to be the angle between the two leptons and the two bjets in the rest frame of the ttbar system
Finding sensitive variables
Untill now we have used lab frame variables as the

. The following images compare signal and standard model
Phi angle between the two bjets |
Phi angle between the two bjets |
Reweighting
We used these variables in order to make reconstructed level MC of signal. We serialized these variables in order to make transform a 2D histogram into a 1D as seen in the picture below.
1D histogram representing two variables. The angle between the two leptons runs from 0 to 5pi. It is divided in 5 branches of size pi. In the first branch, are all the events where the phi angle between bjets lays between 0 to phi/5. The following branch has the same but angles between pi/5 to 2pi/5; and so on and so fort.
Using these variables we reweighted a SM ttbat MC in order to get reconstructed level MC of signal. Below there some pictures that show the results of the rewighting using the variables.
In this case for example, it is easy to separate signal from data. |
In this case it is much difficult to exclude the signal because it is quite similar to the Standard Model. In order to discriminate the signal from Standard Model, we should use statisticals tools. | |
Setting limits on the radius of the Top
Using the above criteria, we got the r-value from each signal. If

, there is the probability that we can exclude the signal. The following graph represents a 3D plot there the z-axis represents #$r$# for some signal. The x-axis represents the radius of the top #$R_{t}$%, and the y-axis the anomalous magnetic moment #$\kappa_{V}$#.
Until now, the plots are done without including systematics.
Plot that represent the value r-value for each signal. Color scale is used in orther to represent the strenght of the signal.
The project until now Conclusions
I have run the code without implementing systematics on generator level samples in order to get recontrusted level samples.Uppon this moment, the code set a limit on the radius of the top to be less than 0.001 Tev-1.
Update September 14, 2016
* I have created a github repository to check the code. The link is
GitHub
Pedro's new directions
python scripts/plotter.py -i topradius_analysis -j data/era2016/samples.json --signalJson data/era2016/topradius_samples.json --lumiSpecs EE:11391,MM:12870,EM:12870
- Split the analysis in ee/mumu/emu as in the past ee and mumu were being added together as ll
- Check the DY normalization. The method is given here
. An implementation of the filling of the histogram is here
, and how to read is given here
- Most of the time use a code like this
python scripts/plotter.py -i topFless/ -j data/era2016/samples.json --lumiSpecs EE:11391,MM:12870,EM:12870 --onlyData --only mll -o dy_plotter.root
python scripts/runDYRinRout.py --in topFless/plots/dy_plotter.root --categs 2b --out topFless/plots/
python scripts/runAnomalousTopProductionAnalysis4.py -i /store/cmst3/group/top/summer2016/TopWidth_era2016_ichep -o `pwd`/topradius_analysis -q 8nh --filter topRadiusFilter=Rt_0.00E+00_kappat__2.50E_01_xqcut_30.0_njetmax_1_qcut_60.0.root,SM.root,h_dphillH
Pedro's new directions (November 06, 2016)
- After getting the DY scale factors, I have to implement them into the runAnomlaous4.py script. In order to get the scale factores in a readable file I have to follow this direction
https://github.com/pfs/TopLJets2015/blob/80x_dev/TopAnalysis/scripts/steerTOP16019.sh#L80
- As a second direction, I have to plot the histograms implementing the systematics uncertainties. Challenging one
New code for special ntuple (April 20, 2017)
- There are some problems with some ntuples, the code needed to runAnomalousTopProductionAnalysis is the following:
python scripts/runAnomalousTopProductionAnalysis4_.py -i /store/cmst3/group/top/summer2016/TopWidth_era2016_ichep/ -o Top/top_Rt_5-00E_03_kappat_1-00E_01/ -q 8nh --filter topRadiusFilter=Rt_5.00E_03_kappat_1.00E_01_xqcut_30.0_njetmax_1_qcut_60.0.root,SM.root,h_dphillH -l scripts/specialNtuples.txt
The code above solved the problem for MC files in the specialNtuples.txt file. For the Data ntuples with problems, we have to still work.
Important emails
Couple of things not to forget
New directions 01/25/2017
Pedro has told me what to do in order to compute the theoretical systemacis. First, he make some corrections about my script to compute the systematic uncerntainties. The last version of that script at current time is the 5th version. The next is the description
Hi Jorge,
thanks for the update looking at the script i see you add every single
variation in quadrature, but one has to be careful.
The variations come in pairs. e.g. b-tag up followed by b-tag down.
For each pair you need to evaluate whether the change in the bin
contents is going upwards or downwards and add it in quadrature to the
corresponding histogram of upward/downward variations.
Once all the pairs of systs have been looped over there is a second
histogram with the theory uncertainties (QCD scale variations, top pT,
PDFs). These ones are more cumbersome to compute:
- the 6 QCD scale variations corresponding to different variations of
the factorization/renormalization scale must be used to find the
envelope (max./min. variations at each bin)
- top pT is done as for the experimental variations (check bin-by-bin
where is the variation going to happen)
- PDFs these are 100 variations which need to be considered and the
RMS at each bin is to be used as the uncertainty
Once the 3 above are computed separately they can be added in
quadrature to the experimental ones.
Unfortunately today will be hard for me to meet and then I'll be
travelling to Portugal, but still with internet connection
throughout holidays, so we can at least exchange mails
cheers,
Pedro
The following is the web page of an example of how to apply theoretical systematics using weights.
https://github.com/pfs/TopLJets2015/blob/80x_dev/TopAnalysis/scripts/runTopWidthAnalysis.py#L335-L343
Appendix
1. The rivet code to compute the angle between the bbbar and l+l- in the rest frame of the ttbar system.
const FourMomentum p4_3 = 2*leptons[0].momentum()+bjets[0].momentum()+2*leptons[1].momentum()+ bjets[1].momentum();
LorentzTransform transform3(p4_3.boostVector());
const FourMomentum lepton1_tt = transform3.transform(leptons[0]);
const FourMomentum lepton2_tt = transform3.transform(leptons[1]);
const FourMomentum bjet1_tt = transform3.transform(bjets[0]);
const FourMomentum bjet2_tt = transform3.transform(bjets[1]);
histos["dphill_tt"] -> fill(deltaPhi(lepton1_tt,lepton2_tt),weight);
histos["dphibb_tt"] -> fill(deltaPhi(bjet1_tt,bjet2_tt),weight);
dphill_tt_=deltaPhi(lepton1_tt,lepton2_tt);
dphibb_tt_=deltaPhi(bjet1_tt,bjet2_tt);
2. Another useful piece of code
{
double totE;
unsigned int pixel;// <---- !!!!
TCanvas *c1= new TCanvas ("c1","c1",800,800);
gPad->Divide(0,2);
TH1F *h= new TH1F("h","h",1000,0,40);
TH1F *h1= new TH1F("h1","h1",1000,0,600);
TFile *myfile= TFile::Open("test4pixels.root");
TTree *tree= (TTree*)myfile->Get("tree");
tree->SetBranchAddress("pixel",&pixel);
tree->SetBranchAddress("totE",&totE);
for (int i=0; i<tree->GetEntries(); i++)
{
tree->GetEntry(i);
h->Fill(pixel);
h1->Fill(totE);
}
h->Draw();
}
</verbatim>