| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

DstConf::DstConf Class Reference

List of all members.

Public Member Functions

def __apply_configuration__

Static Public Attributes

list KnownDstTypes = ['NONE', 'DST','RDST']
list KnownPackTypes = ['NONE', 'TES','MDF']

Private Member Functions

def _doWrite
def _defineOutputData
def _doWritePOOL
def _doWriteMDF
def _doPack
def _doUnpack

Static Private Attributes

dictionary __slots__
dictionary _propertyDocDct

Detailed Description

Definition at line 10 of file DstConf.py.


Member Function Documentation

def DstConf::DstConf::_doWrite (   self  )  [private]

Define the file content and write it out

Definition at line 34 of file DstConf.py.

00034                         :
00035         """
00036         Define the file content and write it out
00037         """
00038         dType = self.getProp( "DstType" ).upper()
00039         if dType not in self.KnownDstTypes:
00040             raise TypeError( "Unknown DST type '%s'"%dType )
00041         if dType == 'NONE': return
00042 
00043         pType = self.getProp( "PackType" ).upper()
00044         if pType not in self.KnownPackTypes:
00045             raise TypeError( "Unknown packing type '%s'"%pType )
00046 
00047         items    = []
00048         optItems = []
00049         self._defineOutputData( dType, pType, items, optItems )
00050         
00051         if pType == 'MDF':
00052             if dType == 'DST': raise TypeError( "Only RDST are supported with MDF packing" )
00053             self._doWriteMDF( items )
00054         else:
00055             self._doWritePOOL( items, optItems )
00056             
00057 
    def _defineOutputData( self, dType, pType, items, optItems ):

def DstConf::DstConf::_defineOutputData (   self,
  dType,
  pType,
  items,
  optItems 
) [private]

Define content of the output dataset

Definition at line 58 of file DstConf.py.

00058                                                                 :
00059         """
00060         Define content of the output dataset
00061         """
00062         
00063         # Choose whether to write packed or unpacked objects
00064         if pType == 'NONE':
00065             recDir = "Rec"
00066         else:
00067             recDir = "pRec"
00068             if not hasattr( self, "PackSequencer" ):
00069                 raise TypeError( "Packing requested but PackSequencer not defined" )
00070 
00071         # Add depth if not MDF
00072         if pType == 'MDF':
00073             depth = ""
00074         else:
00075             depth = "#1"
00076 
00077         items += [ "/Event/DAQ/ODIN"                         + depth
00078                  , "/Event/Rec/Header"                       + depth
00079                  , "/Event/Rec/Status"                       + depth 
00080                  , "/Event/" + recDir + "/Track/Best"        + depth
00081                  , "/Event/" + recDir + "/Calo/Electrons"    + depth
00082                  , "/Event/" + recDir + "/Calo/Photons"      + depth
00083                  , "/Event/" + recDir + "/Calo/MergedPi0s"   + depth
00084                  , "/Event/" + recDir + "/Calo/SplitPhotons" + depth
00085                  , "/Event/" + recDir + "/ProtoP/Charged"    + depth
00086                  , "/Event/" + recDir + "/ProtoP/Neutrals"   + depth
00087                  , "/Event/" + recDir + "/Vertex/Primary"    + depth
00088                  , "/Event/" + recDir + "/Vertex/V0"         + depth ]
00089 
00090         # Additional objects only on DST
00091         if dType == "DST":
00092             items += [ "/Event/" + recDir + "/Track/Muon" + depth ]
00093 
00094             # Additional objects not packable as MDF
00095             if pType != "MDF":
00096                 items += [ "/Event/DAQ/RawEvent#1" ]
00097 
00098                 # Add selection results if DST commes from stripping ETC
00099                 optItems += [ "/Event/Phys/Selections#1" ]
00100 
00101                 # Add the simulation objects (POOL DST only)
00102                 if self.getProp("SimType").capitalize() != "None":
00103                     # Minimal MC output.
00104                     items += [ "/Event/Gen/Header#1"
00105                              , "/Event/MC/Header#1"
00106                              , "/Event/pSim/MCVertices#1" ]
00107 
00108                     if self.getProp("SimType").capitalize() == "Full":
00109                         items += [
00110                              # Links to MCParticles created in Brunel
00111                                "/Event/Link/Rec/Track/Best#1"
00112 
00113                              # Objects propagated from Gauss
00114                              , "/Event/Gen/Collisions#1"
00115                              , "/Event/Gen/HepMCEvents#1"
00116                              , "/Event/pSim/MCParticles#1"
00117 
00118                              # Objects propagated from Boole
00119                              , "/Event/MC/DigiHeader#1"
00120                              , "/Event/MC/TrackInfo#1"
00121                              , "/Event/MC/Rich/DigitSummaries#1"
00122                              , "/Event/MC/Muon/DigitsInfo#1"
00123                              , "/Event/Link/Raw/Velo/Clusters#1"
00124                              , "/Event/Link/Raw/TT/Clusters#1"
00125                              , "/Event/Link/Raw/IT/Clusters#1"
00126                              , "/Event/Link/Raw/OT/Times#1"
00127                              , "/Event/Link/Raw/Ecal/Digits#1"
00128                              , "/Event/Link/Raw/Muon/Digits#1"
00129                              , "/Event/Link/Trig/L0/FullCalo#1" ]
00130 
00131                     # Objects propagated from Boole, not always available
00132                     optItems += [ "/Event/Prev/MC/Header#1"
00133                                 , "/Event/PrevPrev/MC/Header#1"
00134                                 , "/Event/Next/MC/Header#1"
00135                                 , "/Event/Link/Raw/Hcal/Digits#1" # From Boole v14r9
00136                                 ]
00137 
    def _doWritePOOL( self, items, optItems ):

def DstConf::DstConf::_doWritePOOL (   self,
  items,
  optItems 
) [private]

Write a DST (or RDST) in POOL format

Definition at line 138 of file DstConf.py.

00138                                              :
00139         """
00140         Write a DST (or RDST) in POOL format
00141         """
00142         writer = OutputStream( self.getProp("Writer") )
00143         ApplicationMgr().OutStream.append( writer )
00144         writer.Preload = False
00145         writer.ItemList += items
00146         writer.OptItemList += optItems
00147         log.info( "%s.ItemList=%s"%(self.getProp("Writer"),items) )
00148         log.info( "%s.OptItemList=%s"%(self.getProp("Writer"),optItems) )
00149         
00150 
    def _doWriteMDF( self, items ):

def DstConf::DstConf::_doWriteMDF (   self,
  items 
) [private]

Write an RDST in MDF format

Definition at line 151 of file DstConf.py.

00151                                   :
00152         """
00153         Write an RDST in MDF format
00154         """
00155         from Configurables import  WritePackedDst, LHCb__MDFWriter
00156 
00157         MDFpacker = WritePackedDst('MdfPacker')
00158         MDFpacker.Containers += items
00159         
00160         MDFwr = LHCb__MDFWriter('MdfWriter')
00161         MDFwr.Connection = self.getProp( "OutputName" ) + '.mdf'
00162         MDFwr.Compress = 2
00163         MDFwr.GenerateMD5 = True
00164         MDFwr.BankLocation = '/Event/DAQ/DstEvent'
00165         
00166         GaudiSequencer("WriteMDFSeq").Members += [ MDFpacker, MDFwr ]
00167 
    def _doPack( self ):

def DstConf::DstConf::_doPack (   self  )  [private]

Set up the sequence to create the packed containers

Definition at line 168 of file DstConf.py.

00168                        :
00169         """
00170         Set up the sequence to create the packed containers
00171         """
00172         packDST = self.getProp("PackSequencer")
00173         from Configurables import PackTrack, PackCaloHypo, PackProtoParticle, PackRecVertex, PackTwoProngVertex
00174         packDST.Members = [   PackTrack()
00175                               , PackCaloHypo( name       = "PackElectrons",
00176                                               InputName  = "/Event/Rec/Calo/Electrons",
00177                                               OutputName = "/Event/pRec/Calo/Electrons")
00178                               , PackCaloHypo( name       = "PackPhotons",
00179                                               InputName  = "/Event/Rec/Calo/Photons",
00180                                               OutputName = "/Event/pRec/Calo/Photons")
00181                               , PackCaloHypo( name       = "PackMergedPi0s",
00182                                               InputName  = "/Event/Rec/Calo/MergedPi0s",
00183                                               OutputName = "/Event/pRec/Calo/MergedPi0s")
00184                               , PackCaloHypo( name       = "PackSplitPhotons",
00185                                               InputName  = "/Event/Rec/Calo/SplitPhotons",
00186                                               OutputName = "/Event/pRec/Calo/SplitPhotons")
00187                               , PackProtoParticle( name       = "PackCharged",
00188                                                    InputName  = "/Event/Rec/ProtoP/Charged",
00189                                                    OutputName = "/Event/pRec/ProtoP/Charged")
00190                               , PackProtoParticle( name       = "PackNeutrals",
00191                                                    InputName  = "/Event/Rec/ProtoP/Neutrals",
00192                                                    OutputName = "/Event/pRec/ProtoP/Neutrals")
00193                               , PackRecVertex()
00194                               , PackTwoProngVertex()
00195                               ]
00196         if self.getProp( "DstType" ).upper() == "DST":
00197             packDST.Members += [ PackTrack( name       = "PackMuons",
00198                                             InputName  = "/Event/Rec/Track/Muon",
00199                                             OutputName = "/Event/pRec/Track/Muon") ]
00200 
00201         # In MDF case, add a sub sequence for the MDF writing
00202         if self.getProp( "PackType" ).upper() == "MDF":
00203             packDST.Members += [ GaudiSequencer("WriteMDFSeq") ]
00204 
    def _doUnpack( self ):

def DstConf::DstConf::_doUnpack (   self  )  [private]

Set up DataOnDemandSvc to unpack a packed (r)DST

Definition at line 205 of file DstConf.py.

00205                          :
00206         """
00207         Set up DataOnDemandSvc to unpack a packed (r)DST
00208         """
00209         from Configurables import UnpackTrack, UnpackCaloHypo, UnpackProtoParticle, UnpackRecVertex, UnpackTwoProngVertex
00210 
00211         unpackTracks       = UnpackTrack()
00212         unpackMuons        = UnpackTrack( name       = "UnpackMuons",
00213                                           OutputName = "/Event/Rec/Track/Muon",
00214                                           InputName  = "/Event/pRec/Track/Muon")
00215         unpackVertex       = UnpackRecVertex()
00216         unpackV0           = UnpackTwoProngVertex()
00217         unpackElectrons    = UnpackCaloHypo( name       = "UnpackElectrons",
00218                                              OutputName = "/Event/Rec/Calo/Electrons",
00219                                              InputName  = "/Event/pRec/Calo/Electrons")
00220         unpackPhotons      = UnpackCaloHypo( name       = "UnpackPhotons",
00221                                              OutputName = "/Event/Rec/Calo/Photons",
00222                                              InputName  = "/Event/pRec/Calo/Photons")
00223         unpackMergedPi0s   = UnpackCaloHypo( name       = "UnpackMergedPi0s",
00224                                              OutputName = "/Event/Rec/Calo/MergedPi0s",
00225                                              InputName  = "/Event/pRec/Calo/MergedPi0s")
00226         unpackSplitPhotons = UnpackCaloHypo( name       = "UnpackSplitPhotons",
00227                                              OutputName = "/Event/Rec/Calo/SplitPhotons",
00228                                              InputName  = "/Event/pRec/Calo/SplitPhotons")
00229         unpackCharged  = UnpackProtoParticle(name       = "UnpackCharged",
00230                                              OutputName = "/Event/Rec/ProtoP/Charged",
00231                                              InputName  = "/Event/pRec/ProtoP/Charged")
00232         unpackNeutrals = UnpackProtoParticle(name       = "UnpackNeutrals",
00233                                              OutputName = "/Event/Rec/ProtoP/Neutrals",
00234                                              InputName  = "/Event/pRec/ProtoP/Neutrals")
00235 
00236         DataOnDemandSvc().AlgMap[ "/Event/Rec/Track/Best" ]        = unpackTracks
00237         DataOnDemandSvc().AlgMap[ "/Event/Rec/Track/Muon" ]        = unpackMuons
00238         DataOnDemandSvc().AlgMap[ "/Event/Rec/Calo/Electrons" ]    = unpackElectrons
00239         DataOnDemandSvc().AlgMap[ "/Event/Rec/Calo/Photons" ]      = unpackPhotons
00240         DataOnDemandSvc().AlgMap[ "/Event/Rec/Calo/MergedPi0s" ]   = unpackMergedPi0s
00241         DataOnDemandSvc().AlgMap[ "/Event/Rec/Calo/SplitPhotons" ] = unpackSplitPhotons
00242         DataOnDemandSvc().AlgMap[ "/Event/Rec/ProtoP/Charged" ]    = unpackCharged
00243         DataOnDemandSvc().AlgMap[ "/Event/Rec/ProtoP/Neutrals" ]   = unpackNeutrals
00244         DataOnDemandSvc().AlgMap[ "/Event/Rec/Vertex/Primary" ]    = unpackVertex
00245         DataOnDemandSvc().AlgMap[ "/Event/Rec/Vertex/V0" ]         = unpackV0
00246 
00247         # If simulation, set up also unpacking of MC Truth
00248         if self.getProp("SimType").capitalize() != "None":
00249             from Configurables import UnpackMCParticle, UnpackMCVertex
00250             DataOnDemandSvc().AlgMap[ "/Event/MC/Particles" ] = UnpackMCParticle()
00251             DataOnDemandSvc().AlgMap[ "/Event/MC/Vertices" ]  = UnpackMCVertex()
00252         
00253 
    def __apply_configuration__(self):

def DstConf::DstConf::__apply_configuration__ (   self  ) 

Definition at line 254 of file DstConf.py.

00254                                      :
00255         if self.getProp( "EnableUnpack" ) : self._doUnpack()
00256         if hasattr( self, "PackSequencer" ): self._doPack()
00257         GaudiKernel.ProcessJobOptions.PrintOn()
00258         self._doWrite()
00259         GaudiKernel.ProcessJobOptions.PrintOff()
        GaudiKernel.ProcessJobOptions.PrintOff()


Member Data Documentation

dictionary DstConf::DstConf::__slots__ [static, private]

Initial value:

{
         "DstType"       : "NONE"
       , "SimType"       : "None"
       , "EnableUnpack"  : False
       , "PackType"      : "TES"
       , "PackSequencer" : None
       , "Writer"        : "DstWriter"
       , "OutputName"    : ""
         }

Definition at line 11 of file DstConf.py.

dictionary DstConf::DstConf::_propertyDocDct [static, private]

Initial value:

{ 
        'DstType'       : 
       ,'SimType'       : """ Type of simulation output, can be ['None','Minimal','Full'] """
       ,'EnableUnpack'  : """ Flag to set up on demand unpacking of DST containers """
       ,'PackType'      : """ Type of packing for the DST, can be ['NONE','TES','MDF'] """
       ,'PackSequencer' : """ Sequencer in which to run the packing algorithms """
       ,'Writer'        : """ Name of OutputStream writing the DST """
       ,'OutputName'    : """ Name of the output file, for MDF writing """ 
       }

Definition at line 21 of file DstConf.py.

list DstConf::DstConf::KnownDstTypes = ['NONE', 'DST','RDST'] [static]

Definition at line 31 of file DstConf.py.

list DstConf::DstConf::KnownPackTypes = ['NONE', 'TES','MDF'] [static]

Definition at line 32 of file DstConf.py.


The documentation for this class was generated from the following file:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:04:43 2011 for GaudiConf by doxygen 1.4.7