This documentation is about the (attempt for a) 2nd version of the Globe analysis FW.
general design and description of the current version of the software (05/05/2008):
The general idea is to recycle as much as possible the Branches which are already available in the CMSSW Event.
In particular those which are part of the AOD data Tier (e.g. collection of electrons, muons and generalTracks).
The RECO and AOD data have to be processed in several steps. During each step, different actions are performed
dropping of branches:
root branches which are not used in the next steps of the analysis are dropped from the Event --> "data reduction"
addition of branches:
new data is obtained from the one already available. New root branches with the additional data are attached to the Event --> "data processing".
In this case, we both create completely new data (e.g. a higgs 4-vector from 4 selected reconstructed muons) and we store "links" to already available
data (e.g. references to 4 selected reco::Muons )
skimming of events:
on the base of the available information, events are filtered out from the root tree.
In the current implementation of the code 2 new blocks of information are added to the event:
- a new branch called McEventInfo contains essential information about the MC event: type, processId, reference to Higgs and leptons genParticles. The type of the event is: 1 if it is H->ZZ->4muons; 2 if it is H->ZZ->2ele2mu and 3 if it is H->ZZ->4ele. In all the other case, the type = -1 which means "undefined"
- another new branch is a collection of RecoEventHypothesis. Each reconstructed event is classified on the base of the final number of leptons. According to the number of reconstructed muons and electrons, different RecoEventHypothesis can be compatible with the same event: if there are 5 final muons, different combinations of muons can produce an EvenHypothesis of type=1.
The 2 new branches are added to the event by a single EDProducer called
Layer1Producer. In order to keep this class small, the heavy part of the work is done by 2 helper classes:
McEventInfoDumper and RecoEventHypothesisDumper. Each of them is responsible of filling the corresponding new block of data.
At the moment the data reduction is brutal. All the branches are dropped, but the new created ones and the original genParticle, muon and gsfElectron collections.
New branches from the AOD or RECO can be kept configuring properly the PoolOutputModule in the cfg which is run.
At the moment its configuration is simply:
module output = PoolOutputModule {
untracked string fileName = 'output.root'
untracked vstring outputCommands =
{
"drop *_*_*_*",
"keep *_*_*_Globe2Test",
"keep recoGenParticles_genParticles_*_*",
"keep recoMuons_muons_*_*",
"keep recoGsfElectrons_pixelMatchGsfElectrons_*_*"
}
}
Tutorial to use out-of-the-box what is available
1) login in to uaf:
ssh username@uaf-2.t2.ucsd.edu
create a new project area base on a 2_0_X release of CMSSW and compile the code of globe2
scramv1 project CMSSW CMSSW_2_0_5
cd CMSSW_2_0_5/src
eval `scramv1 runtime -sh`
tar -xzf /home/users/bmangano/backup/globe2.tgz
scramv1 b -j 8
run the cfg file which runs the
Layer1Processin? module:
cmsRun Globe2/Layer1Processing/test/test.cfg >& log &
The average size of each branch can be evaluated with the following command
edmEventSize -v output.root
On a sample of signal (H->ZZ->4leptons):
17 kb/evt for the genParticleCollection (it may be filtered keeping only the relevant particles)
2 kb/evt muon collection
1.5 kb/evt electron collection
300 byte/evt RecoEventHypothesis
250 byte/evt McInfo block
the produced output file can be analyzed quickly in a root session (be sure to have FW libraries loaded by your rootlogon.C).
root.exe output.root
The first thing to do is to set some aliases to access the different branches quickly.
gApplication->InitializeGraphics() // This is temporary fix to a FW problem that arose in CMSSW20X
Events->SetAlias("genP","recoGenParticles_genParticles__TEST.obj")
Events->SetAlias("mc","McEventInfo_layer1Producer__Globe2Test.obj")
Events->SetAlias("reco","RecoEventHypothesiss_layer1Producer__Globe2Test.obj")
With few lines we can plot the invarinat mass of the Higgs, the one of the 4 final
stable leptons and the difference between them. This last variable is related to the amount on energy which is radiated by photons of internal bremsstrahlung
Events->Scan("mc.higgs().pt():mc.higgs().mass():mc.sum4Leptons().mass()")
Events->Draw("mc.processId()")
Events->Draw("mc.higgs().mass()")
Events->Draw("mc.sum4Leptons().mass()")
Events->Draw("mc.higgs().mass() - mc.sum4Leptons().mass()")
Accessing the RecoEventHypothesis block, the reconstructed higgs mass can be plotted for different types of
EventHypothesis?
Events->Scan("reco.type():reco.higgs().mass():reco.higgs().charge()","reco.type()==1")
Events->Draw("reco.type()")
Events->Draw("reco.higgs().mass()","reco.type()==1")
Events->Draw("reco.higgs().mass()","reco.type()==2")
Events->Draw("reco.higgs().mass()","reco.type()==3")
Events->Draw("reco.higgs().mass()")
With one single line we can plot the difference between the mc and reco invariant mass of the final 4 leptons. This variable is related both to the resolution of the detector and to the selection of our analysis (combinatorics background).
Events->Draw("reco.higgs().mass()-mc.sum4Leptons().mass()")
list of actions:
1) produce or copy at UCSD additional samples of background and signal. Signal samples should be available for different values of the higgs mass and with higher statistics.
2) extend the McEventInfoDumper in order to define new types of event: ttbar, zbb, ZZ. Add references to additional generator particles of interest (e.g. internal bremsstrahlung photons).
3) extend the RecoEventHypothesisDumper in order to create more sophisticated EventHypothesis;
- request charge compatibility
- properly handle the combinatorics in case there are more than 4 final reconstructed leptons
4) Change the RecoEventHypothesisDumper in order to accept a filtered collection of muons and electrons (quality and
ElectronId? have to be applied).
5) All the collection labels used in the code have to be configurable by cfi file and not hardwired in the c++ code (as it is done at the moment).
some of the plots obtained following the tutorial instructions
--
BorisMangano - 24 Apr 2008
- mcHiggsMass.png:
- mc4LeptMass.png:
- mcInternalRadiation.png:
- recoHiggsMass.png:
- massResolution.png: