Difference: CMSUniandesGroupAnalysis (7 vs. 8)

Revision 82011-08-17 - AndresOsorio

Line: 1 to 1
 
META TOPICPARENT name="CMSUniandesGroup"
Line: 332 to 332
 

Creacion de una EDM-tuple

Added:
>
>
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.
 
Added:
>
>
  • El concepto clave en este ejercicio es el de Filter (o filtro) en CMSSW.
  • 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:
 
Added:
>
>
[hep] cd CMSSW_3_11_3/src
[hep] cmsenv
[hep] cd MyAnalyzers/
[hep] mkedfltr EDMtupler

  • Inspeccionemos el modulo que se ha creado:

[hep] cd EDMtupler
[hep] ls 
BuildFile  doc  interface  python  src  test
[hep] cd src
[hep] emacs EDMtupler.cc

  • 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.

  • En el constructor de nuestro modulo insertemos las siguientes lineas:


   produces< int    > ("isGoodMuon").setBranchAlias("isGoodMuon");
   produces< double > ("muonPx").setBranchAlias("muonPx");
   produces< double > ("muonPy").setBranchAlias("muonPy");
   produces< double > ("muonPz").setBranchAlias("muonPz");
   produces< double > ("muonE").setBranchAlias("muonE");

  • 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

  • Ahora podemos trabajar en el metodo filter y adicionar lo siguiente:


   // Create memory to be put into event
   std::auto_ptr< int    > isGoodMuon     (new int   );
   std::auto_ptr< double > muonPx        (new double);
   std::auto_ptr< double > muonPy        (new double);
   std::auto_ptr< double > muonPz        (new double);
   std::auto_ptr< double > muonE          (new double);

* Estamos listos ahora para llenar nuestro EDM-tuple con la informacion que queremos:


  // 1. Muon collection
  edm::Handle<edm::View<pat::Muon> > muons;
  iEvent.getByLabel( m_muonSrc, muons);

  for(edm::View<pat::Muon>::const_iterator muon=muons->begin(); muon!=muons->end(); ++muon) {
    
  
  }

 

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"
 
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