« Linux | Main | Programming »

Tuesday, August 08, 2006

To sum up...

Final entry (until I resume work!). Let's put everything that's been done this summer together...

We'll have to start by creating an area for our project. If our version of CMSSW is, say, 0_8_0, then we'll have to write:

scramv1 project CMSSW CMSSW_0_8_0;

To checkout code from the repository:

cd CMSSW_0_8_0/src;
cmscvsroot CMSSW; cvs login;
cvs co -r CMSSW_0_8_0 IOMC;
Inside the IOMC/GeneratorInterface/test we can find some examples of event generation. Before doing anything like this though, we'll have to do:
cd IOMC/GeneratorInterface/test;
eval `scramv1 runtime -sh`;
Needed after logon to run a project.
cmsRun mcinput.cfg; Generate events.

To study a certain process you need to change the parameters that are being sent to Pythia. For the example code, these are located in IOMC/GeneratorInterface/data inside the .cfi files. Setting MSEL=0 allows you to define your own processes. Then, you'll have to use MSUB to choose processes and, if desired, MDME values to turn on or off decay channels. More information about these can of course be found in the Pythia manual.

Now, after generating some events you'll want to process them I suppose. There are two ways to do this:

  • Using ROOT and FWLight
  • Using the Full Framework

For FWLight, you'll have to load all the necessary tools after starting ROOT:

gSystem->Load("libFWCoreFWLite.so");
AutoLibraryLoader::enable();

The full framework gives you full control (and probably less frustration!). You'll have to create a directory for your analysis and create an empty analyzer project which you'll use as a template to do all the real work:

After logging in your account then you can do:

cd CMSSW_0_8_0/src
eval `scramv1 runtime -sh`
mkdir Analysis
mkedanlzr Analyzer

Now you can change the Analyzer.cc in the Analysis/Analyzer/src directory to do whatever you want to do. I have put online my code (not final version). After Aug. 15th I'll put online the "final" versions as well as a reference. A useful "recipe" from Sasha Nikitenko can be found here. Other useful pages can be found in the sidebar (-->) .All the presentations I've put in the files section could be useful. Also, in previous postings there are information about how to iterate over SuperClusters or other parts of the resulting root files and how to extract information from them.

Now a good part of this summer was (well) spent on trying to deduce a good electron-finding technique. The following cuts seem to work nicely:

  • Min SC energy cut = 5.0 GeV
  • Max SC energy cut = 300.0 GeV
  • ΔR between SCs & Jets >= 0.5
  • E ratio between SCs & Jets >= 0.3
  • ΔR between Tracks & SCs = 0.5
  • E/Pt between Tracks & SCs >= 0.7

Also, the current version of CMSSW seems to have some issues with the EndCap SuperClusters (look at previous post and the August 1st presentation).

You may also find my final presentation interesting (tba).

Posted by Christos Lazaridis at 12:08 PM
Edited on: Wednesday, September 27, 2006 1:57 PM
Categories: CMSSW, Linux, Physics, Programming, Root

Monday, June 26, 2006

June 26

Not much to say... I've been trying to make my root scripts more elaborate.

I have an updated version of the Powerpoint presentation (some plots have finally Et removed). The PlotCombined root script now plots each background set with a different color (e+e-, neutrinos). Also, the scaling of the graphs changed slightly. Now to do the scaling, the sum of the cross sections of each set is being used times the number of events.

Posted by Christos Lazaridis at 6:15 PM
Edited on: Monday, June 26, 2006 6:15 PM
Categories: CMSSW, Physics, Root

Monday, June 19, 2006

Week 3

June 23

Created 2 highest Pt e+e- plots. Signal, Background Set 1, Set 2, Top, Drell-Yan.
* Script stops searching @50th particle to save time.

Finished(?) script to produce combined signal/background plots. Will be online during the weekend hopefully.

Powerpoint presentation with the progress so far (under development!)

June 22

Started producing background plots. Plotted all background sets separately. (until I get organized better look at my files)

Plotted the highest Pt electrons for the signal.

Work in progress: Script to plot signal+background together.

Scaling of the histograms: Multiplication of the cross section given by Pythia times the number of events.

TODO: 1) Plot 2 highest Pt electrons. 2) Remove Et from graphs - keep only Pt (DONE - new plots will be ok).

June 20

Looking for background processes in Pythia... current selection:

'MSUB(12)=1 ! fi fibar -> fk fkbar',
'MSUB(15)=1 ! fi fibar -> g Z0',
'MSUB(16)=1 ! fi fjbar -> g W+',
'MSUB(22)=1 ! fi fibar -> Z0 Z0',
'MSUB(23)=1 ! fi fjbar -> Z0 W+',
'MSUB(25)=1 ! fi fibar -> W+ W-',
'MSUB(30)=1 ! fi g -> fi Z0',
'MSUB(31)=1 ! fi g -> fk W+',
'MSUB(81)=1 ! fi fibar -> Qk Qkbar',
'MSUB(82)=1 ! gg -> Qk Qkbar',
'MSUB(84)=1 ! g gamma -> Qk Qkbar'

June 19

So, the Drell-Yan process is the collision between two quarks giving a virtual photon and subsequently a lepton and an antilepton pair as a product.

Quoting this paper (Phys. Rev. Lett. 56, 1327), my process, a Z with larger transverse momentum opposite a missing transverse momentum of the same size, has litte background in the SM.

Notes:
K-factor: The fraction (NLO cross section)/(LO cross section) --- NLO: Next Leading Order

Posted by Christos Lazaridis at 4:38 PM
Edited on: Saturday, June 24, 2006 7:28 PM
Categories: CMSSW, Physics, Root

Thursday, June 15, 2006

Week 2

* Final selection of process: Higgs -> ZZ -> eeνν

  • Find and set Pythia parameters to produce the above process.

Parameter selection so that only the Higgs->ZZ process exists. Also, Added constraints so that one of the Zs decays to e+e- and the other to (any) two neutrinos.

Currently at the stage of identifying background processes. t-tbar and the Drell-Yan process (?->look it up!) important backgounds.

Root notes:

Getting the events from the root file:

TTree* events = (TTree*) (f.Get("Events"));
TBranch* MCBranch = events->GetBranch("edmHepMCProduct_PythiaSource__TEST.obj");
edm::HepMCProduct prod;
MCBranch->SetAddress(&prod);

To iterate over all particles in a root file:

for (HepMC::GenEvent::particle_const_iterator p = prod.getHepMCData().particles_begin();
p != prod.getHepMCData().particles_end(); ++p )
{
...
}

Useful properties of particles:

(*p)->ParticleID(); What particle are we dealing with?
(*p)->momentum().perp();Transverse component of momentum
(*p)->momentum().eta();
Pseudorapidity
(*p)->momentum().et();
Transverse energy
(*p)->momentum().Mother();The mother of the particle

Posted by Christos Lazaridis at 3:43 PM
Edited on: Monday, June 19, 2006 2:48 PM
Categories: CMSSW, Physics, Root

Christos Lazaridis - My other website :)