Difference: CMSUniandesGroupAnalysis (8 vs. 9)

Revision 92011-08-17 - AndresOsorio

Line: 1 to 1
 
META TOPICPARENT name="CMSUniandesGroup"
Line: 335 to 335
 Como su nombre lo indica, una EDM-tuple mantiene la estructura que CMSSW da a cada evento en el llamdo Event Data Model. Es decir se mantienen las colecciones, con todas las ventajas que esto trae. Existen varios mecanismos para hacerlo. Uno de ellos se describe a continuación.

  • El concepto clave en este ejercicio es el de Filter (o filtro) en CMSSW.
Changed:
<
<
  • Por ello, lo primero que haremos es crear un filtro
  • Vamos entonces a nuestra area de trabajo en CMSSW_3_11_3/src/ , preparemos el entorno para CMSSW, y creemos un esqueletro para hacer un filtro:
>
>
  • Por ello, lo primero que haremos es crear un filtro usando el script que nos arma un esqueleto
  • Vamos entonces a nuestra area de trabajo en CMSSW_3_11_3/src/, preparemos el entorno para CMSSW, y creemos un esqueleto para hacer un filtro:
 
[hep] cd CMSSW_3_11_3/src
Line: 355 to 355
 [hep] emacs EDMtupler.cc
Changed:
<
<
  • Este nuevo modulo es un Filter, el cual tiene la capacidad de producir (y filtrar) archivos EDM. Esta propiedad de producir nueva informacion es la que vamos a aprovechar para crear nuestra EDM-tuple.
>
>
  • Este nuevo modulo es un Filter, el cual tiene la capacidad de producir (y filtrar) archivos EDM. Esta propiedad de producir nueva informacion es la que vamos a explotar para crear nuestra EDM-tuple.
 
  • En el constructor de nuestro modulo insertemos las siguientes lineas:

Added:
>
>
//un input TAG (no olvidar declararlo como miembro de esta clase (es decir adicionar edm::InputTag m_muonSrc; )

m_muonSrc = iConfig.getUntrackedParameter<edm::InputTag>("muonSrc");

//estas son las variables que guardaremos en nuestra EDMtuple:

  produces< int > ("isGoodMuon").setBranchAlias("isGoodMuon"); produces< double > ("muonPx").setBranchAlias("muonPx"); produces< double > ("muonPy").setBranchAlias("muonPy");
Line: 369 to 375
 
Changed:
<
<
  • Aqui estamos expresando que vamos a producir ciertas "ramas" -tal como manejamos en una ROOT-tuple. Para este ejemplo, la idea es obtener alguna informacion sobre muones
>
>
  • Aqui estamos expresando que vamos a producir ciertas "ramas" -tal como manejamos en una ROOT-tuple. Para este ejemplo, la idea es obtener alguna informacion sobre muones o pat::Muon. No olvidar adicionar el siguiente include al principio del archivo:

#include "DataFormats/PatCandidates/interface/Muon.h"
 
  • Ahora podemos trabajar en el metodo filter y adicionar lo siguiente:
Line: 384 to 394
 
Changed:
<
<
* Estamos listos ahora para llenar nuestro EDM-tuple con la informacion que queremos:
>
>
* Con esto, estamos creando y asignando la memoria para las "ramas" que iran en nuestra EDM-tuple. Estamos listos para llenar nuestro EDM-tuple con la informacion que queremos. Por ejemplo:
 
Line: 394 to 404
  for(edm::View<pat::Muon>::const_iterator muon=muons->begin(); muon!=muons->end(); ++muon) {

Added:
>
>
///llenamos la informacion que termina en nuestra EDM-tupla if( muon->isGlobalMuon() ) { *isGoodMuon = 1; *muonPx = muon->px(); *muonPy = muon->py(); *muonPz = muon->pz(); *muonE = muon->energy(); } else { *isGoodMuon = -1; *muonPx = -1.0; *muonPy = -1.0; *muonPz = -1.0; *muonE = -1.0;

}

  }

Added:
>
>
  • Listo! Tenemos una EDM-tupla a la que le hemos adicionado algunas variables con informacion sobre muones. El filtro por el momento siempre devuelve un valor "true", pero esto no es obligatorio. Podemos hacer uso de esto para crear EDM-tuples que sean selectivas sobre cierta propiedad o propiedades del evento.

  • Para compilar y correr necesitamos editar el archivo Buildfile y crear un archivo de configuracion. Lamentablemente, el script que arma el esqueleto del filtro no provee un archivo de configuracion modelo. Por simplicidad (y dado que no hay nada nuevo en ellos) ustedes pueden bajar de este Twiki los dos archivos necesarios:

  • O si lo prefieren, los pueden descargar directamente en su area:

[hep] wget --no-check-certificate https://twiki.cern.ch/twiki/pub/Main/CMSUniandesGroupAnalysis/edmtupler_cfg.py.txt
[hep] wget --no-check-certificate https://twiki.cern.ch/twiki/pub/Main/CMSUniandesGroupAnalysis/BuildFile.xml

  • Veamos que contiene el archivo de configuracion:

import FWCore.ParameterSet.Config as cms

process = cms.Process("Demo")

process.load("FWCore.MessageService.MessageLogger_cfi")

process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(100) )

process.source = cms.Source("PoolSource",
                            fileNames = cms.untracked.vstring(
    'file:/scratch/aosorio/data/HSCPs/tutorial/patTuple_HSCPs.root'
    )
                            )

process.applyFilter = cms.EDFilter('EDMtupler',
                                   muonSrc     = cms.untracked.InputTag("cleanPatMuons") )

process.p = cms.Path(process.applyFilter)

process.out = cms.OutputModule("PoolOutputModule",
                               SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring('p') ),
                               fileName = cms.untracked.string('EDMtuple.root'),
                               outputCommands = cms.untracked.vstring('keep *','drop *_cleanPatPhotons_*_*') )

process.e = cms.EndPath(process.out)

  • Al ejecutar el EDMtuple sobre este archivo de configuracion dado, el filtro actua -en el momento no hay ninguna regla que se aplique- y todos los eventos son guardados con sus colecciones en el archivo de salida "EDMtuple.root".

  • Despues de correr, podemos ver que contiene el archivo de salida haciendo uso del comando de CMSSW edmDumpEventContent:

 edmDumpEventContent EDMtuple.root 
Type                                  Module                Label          Process   
-------------------------------------------------------------------------------------
edm::OwnVector<reco::BaseTagInfo,edm::ClonePolicy<reco::BaseTagInfo> >    "selectedPatJets"     "tagInfos"     "PAT"     
vector<CaloTower>                     "selectedPatJets"     "caloTowers"   "PAT"     
vector<pat::Electron>                 "cleanPatElectrons"   ""             "PAT"     
vector<pat::Jet>                      "cleanPatJets"        ""             "PAT"     
vector<pat::MET>                      "patMETs"             ""             "PAT"     
vector<pat::Muon>                     "cleanPatMuons"       ""             "PAT"     
vector<pat::Photon>                   "cleanPatPhotons"     ""             "PAT"     
vector<pat::Tau>                      "cleanPatTaus"        ""             "PAT"     
vector<reco::GenJet>                  "selectedPatJets"     "genJets"      "PAT"     
double                                "applyFilter"         "muonE"        "Demo"    
double                                "applyFilter"         "muonPx"       "Demo"    
double                                "applyFilter"         "muonPy"       "Demo"    
double                                "applyFilter"         "muonPz"       "Demo"    
edm::TriggerResults                   "TriggerResults"      ""             "Demo"    
int                                   "applyFilter"         "isGoodMuon"   "Demo"    
[hep] /home/aosorio/scratch/Tutorials/CMSSW_3_11_3/src/MyAnalyzers/EDMtupler > 

  • Como vemos, se mantienen todas colecciones -que pueden ser de utilidad- y adicionalmente tenemos nuestras variables.

  • Si queremos, podemos eliminar colecciones que no se necesitan. Para ello debemos editar el archivo de configuracion. Buscar la linea siguiente:

outputCommands = cms.untracked.vstring('keep *') )

  • y adicionar la siguiente instruccion:

outputCommands = cms.untracked.vstring('keep *','drop *_cleanPatPhotons_*_*') )

  • Con esta instruccion, nos libramos de la colecciones asociadad a la etiqueta "cleanPatPhotons". Para comprobarlo, podemos volver a ver que ha quedado en nuestro archivo de salida:

 edmDumpEventContent EDMtuple.root 

Type                                  Module                Label          Process   
-------------------------------------------------------------------------------------
edm::OwnVector<reco::BaseTagInfo,edm::ClonePolicy<reco::BaseTagInfo> >    "selectedPatJets"     "tagInfos"     "PAT"     
vector<CaloTower>                     "selectedPatJets"     "caloTowers"   "PAT"     
vector<pat::Electron>                 "cleanPatElectrons"   ""             "PAT"     
vector<pat::Jet>                      "cleanPatJets"        ""             "PAT"     
vector<pat::MET>                      "patMETs"             ""             "PAT"     
vector<pat::Muon>                     "cleanPatMuons"       ""             "PAT"     
vector<pat::Tau>                      "cleanPatTaus"        ""             "PAT"     
vector<reco::GenJet>                  "selectedPatJets"     "genJets"      "PAT"     
double                                "applyFilter"         "muonE"        "Demo"    
double                                "applyFilter"         "muonPx"       "Demo"    
double                                "applyFilter"         "muonPy"       "Demo"    
double                                "applyFilter"         "muonPz"       "Demo"    
edm::TriggerResults                   "TriggerResults"      ""             "Demo"    
int                                   "applyFilter"         "isGoodMuon"   "Demo" 

  • Ya no aparece la coleccion que hemos eliminado. Listo!!!!
 
META FILEATTACHMENT attachment="patTuple_standard_cfg.py.txt" attr="" comment="script para crear una PATtutpla estandar" date="1312372947" name="patTuple_standard_cfg.py.txt" path="patTuple_standard_cfg.py" size="462" stream="patTuple_standard_cfg.py" tmpFilename="/usr/tmp/CGItemp16439" user="aosorio" version="1"
META FILEATTACHMENT attachment="edmConfigEditor-1.png" attr="" comment="edmConfigEditor view" date="1312930564" name="edmConfigEditor-1.png" path="edmConfigEditor-1.png" size="131045" stream="edmConfigEditor-1.png" tmpFilename="/usr/tmp/CGItemp7655" user="aosorio" version="1"
META FILEATTACHMENT attachment="salida-cmsRun-patTuple.txt" attr="" comment="Salida de cmsRun - patTuple" date="1312975837" name="salida-cmsRun-patTuple.txt" path="salida-cmsRun-patTuple.txt" size="21188" stream="salida-cmsRun-patTuple.txt" tmpFilename="/usr/tmp/CGItemp17194" user="aosorio" version="1"
Added:
>
>
META FILEATTACHMENT attachment="BuildFile.xml" attr="" comment="Buildfile para compilar el EDMtupler" date="1313580162" name="BuildFile.xml" path="BuildFile.xml" size="547" stream="BuildFile.xml" tmpFilename="/usr/tmp/CGItemp23766" user="aosorio" version="1"
META FILEATTACHMENT attachment="edmtupler_cfg.py.txt" attr="" comment="Archivo de configuracion para correr el EDMtupler" date="1313580107" name="edmtupler_cfg.py.txt" path="edmtupler_cfg.py" size="953" stream="edmtupler_cfg.py" tmpFilename="/usr/tmp/CGItemp15749" user="aosorio" version="1"
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright &© 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback