home overview news links contact search


cmssoftware
Grid
project management
organization
calendar

construction
Physics Analysis

 

 
 

Event generation on the farm with CMKIN

Make sure that you followed the steps explained in the previous section
The cmkin version we are using is 2_1_0. To build an executable first change to the test area that we set up then do the following steps 

cd $TOP
cmscvsroot CMKIN

You will need to login the first time using cvs login and password: 98passwd

cvs co -r CMKIN_2_1_0 -d CMKIN_2_1_0 CMKIN

cd CMKIN_2_1_0/examples/make_ntpl_jobs/
setenv SCRATCH $PWD
project CMKIN  CMKIN_2_1_0
kine_make_ntpl_pyt.com

Will create kine_make_ntpl_pyt6220.exe which is basically a pythia
executable with the difference that

- it has an interface to change the generator parameters without recompiling.
- the output of the results is in form of hepevt ntuples. In addition there are also the scripts:

kine_make_ntpl_compHEP.com
kine_make_ntpl_isa.com
kine_make_ntpl_hwg.com 
kine_make_ntpl_pyt.com

which create executables for different event generators (ISAJET, HERWIG, COMPHEP)

Now we are ready to produce some Monte Carlo data using the scripts we created in the previous section. 

Now we are ready to submit our job into the queue. The following command will request 8 simultaneous processes, the run numbers of the created files will start at  10000,
we request 100 events per process.

cd $SCRIPTS
setup kerberos
setup fbsng
fbs submit zprime_jj_cmkin.jdf 8 10000 100

The Batch system should respond:

Farm Job <xxxx> has been submitted...

You can check the status of your batch ob by issuing the

fbs status <xxxx>

command. This job should finish pretty quickly and you should receive email from the batch system to the mail adress that you specified in the when issuing the setup.pl command in the previous section. If everything went ok it should say

Exit Code:0

and you should find the ntpl and root files in dcache in the pnfs directory created in the previous section.

ls ${PNFS_PATH}/<runnumber>

In this case the run numbers would be 10001 to 10008.

If you didn't change anything in the .jdf file all the error and output messages of all your processed can be found in:/storage/data/fbs-logs You can list them by typing:

ls /storage/data/fbs-logs/FBS_<xxxx>*

We want to use root to analyze the data that we produced. In this simple example we calculate the invariant mass, of the dimuon and create pt and rapidity distributions. First copy the .root file out of dcache and setup the root environment (use the same root version as used by ORCA).

cd $ANALYSIS
set i=10001
while ($i < 10009)
dccp $PNFS_PATH/${i}/zprime_jj_${i}.root .
@ i++
end


ROOT is used by ORCA therefore it is setup with the ORCA runtime environment. To set this up:

scram list ORCA
cd /afs/fnal.gov/files/code/cms/l/Releases/ORCA/ORCA_7_6_0
eval `scram runtime -csh`
cd -

Or, you may run source ${TOP}/setup_root.csh

Then start ROOT and execute the provided cint macros:

root
root [0] .L h101.C
root [1] .x plot.C
root [2]

will produce the plots below. The first row shows the invariant mass and pt distribution of the Z'. row 2 and 3 show the pt, rapidity and pseudo rapidity distribution of the mu+ and mu- respectively. Note the plots were obtained from a previous run with more statistics than in the example files.

To speed up the execution time of your macros you might want to compile the script (using the root ACLiC compiler). In addition to speed, the advantage of using ACLiC is that the syntax of the script is checked by the compiler. Many bugs and non-standard C++ syntax that Cint accepts will be caught that way and it will be easier to convert the script to a C++ program later on. The ROOT interpreter allows a syntax which is not compliant to C++ and should be avoided.

To do that use the following syntax:

root
root [0] .L h101.C+
root [1] .x plot.C+
root [2]


To create h101.C and h101.h I used the root MakeClass() function and then added the histograms to be filled in the loop. If you want to create your own class here is how it is done:

Following the procedure below the following files are produced: h101.h and h101.C
The generated code in h101.h includes the following:

- Identification of the original Tree and Input file name
- Definition of analysis class (data and functions)
- the following class functions:

- constructor (connecting by default the Tree file)
- GetEntry(Int_t entry)
- Init(TTree *tree) to initialize a new TTree
- Show(Int_t entry) to read and Dump entry
- Loop() loops over all entries, this is the place where you want to add your analysis

For more information visit the ROOT site: http://root.cern.ch/

Below is an example of how to use MakeClass for one input file:

root [0] TFile *f = new TFile("zprime_jj_10001.root");
root [1] f->ls();
TFile** zprime_jj_10001.root HBOOK file: zprime_jj_10001.ntpl converted to ROOT
TFile* zprime_jj_10001.root HBOOK file: zprime_jj_10001.ntpl converted to ROOT
KEY: TTree h101;1 HEPEVT
root [2] h101->MakeClass();
Info in <TTreePlayer::MakeClass>: Files: h101.h and h101.C generated from Tree: h101

Similarly, if you want to analyze several files simultaneously you can chain them together and then create the classes for the chain (in this case the first 10) in the following way:

root

TChain h101("h101");
h101.Add("zprime_jj_10001.root");
h101.Add("zprime_jj_10002.root");
h101.Add("zprime_jj_10003.root");
h101.Add("zprime_jj_10004.root");
h101.Add("zprime_jj_10005.root");
h101.Add("zprime_jj_10006.root");
h101.Add("zprime_jj_10007.root");
h101.Add("zprime_jj_10008.root");
h101.MakeClass();

 

1. General setup
2. Event generation on the farm with CMKIN (Pythia), Analysis of the generator level output
3. Simulate the events with OSCAR
4. Digitize with ORCA
5. Run a small ntuple maker ( from Stephan's ORCA tutorial) looking at Calorimeter quantities 
6. Run the JetMet ntuple maker and make some plots

 

 
 
 

Security, Privacy, Legal
Webmaster

Last modified: September 09, 2004