<<O>>  Difference Topic Marlin (r1.2 - 22 Sep 2009 - Main.iglesias)

META TOPICPARENT WebHome

2.a.i. Marlin

Line: 17 to 17

Marlin -x > mysteer.xml
Changed:
<
<
Me genera un archivo steering de ejemplo con toda la informacion de los procesadores que llamo:
>
>
Me genera un archivo steering de ejemplo con toda la informacion de los procesadores que llamo. La estructura general de un steering file es la siguiente:
  • Execute Section: In this section the names of the processors which are to be executed are listed using the keyword processor. The order of the processor names in the XML-file in this section controls the order of executing the processors. The next example specifies three processors which are called in the order (1) MyAIDAProcessor?, (2) MyTestProcessor?, (3) MyLCIOOutputProcessor?.

 <execute>
  <processor name="MyAIDAProcessor"/>
  <processor name="MyTestProcessor"/>  
  <processor name="MyLCIOOutputProcessor"/>  
 </execute>

  • Global Section: Here all the global settings are made:
    • Specification of the LCIO input files (including paths) which contain the event data
    • The number of events which are to be processed
    • Turn on/off check routines to produce control plots etc. A typical global section could look like this:

<global>
<parameter name="LCIOInputFiles"> simjob.slcio </parameter>
<parameter name="MaxRecordNumber" value="5001" />
<parameter name="SupressCheck" value="false" />
</global>

  • Processor Section: *This section contains several blocks named processor. Every block configures a certain processor and gives it a unique name. These names are used in the execute section to call the processor. Here one processor can be configured more than once using different names as identifier. In this way a processor can be called several times with different parameters. This can be useful to optimise cuts or to use the same algorithm for different input collections. Steering parameters of processors can be of type string, int or float. A typical processor section can look like this, where the example describes the configuration of the processor of type ClusterCheater?.


<processor name="MyClusterCheater" type="ClusterCheater">
<!--Creates true clusters...-->
<!--Calorimeter Collection Names-->
<parameter name="CaloCollections" type="StringVec">ECAL HCAL </parameter>
<!--Magnetic Field-->
<parameter name="MagneticField" type="float">4 </parameter>
<!--Minimal Hits in Cluster-->
<parameter name="MinimalHits" type="int">10 </parameter>
<!--Hit To Cluster Proximity Cut-->
<parameter name="ProximityCut" type="float">1200 </parameter>
<!--SimCaloHit to CaloHit Relations Collection Name-->
<parameter name="RelCollection" type="string">RelationCaloHit </parameter>
<!--Trace Whole Shower Tree-->
<parameter name="TraceWholeShower" type="int">1 </parameter>
<!--Collection of True Clusters-->
<parameter name="TrueClusterCollection" type="string">TrueClusters </parameter>
</processor>

It can be called in the execute section using the name MyClusterCheater?:


<execute>
. . .
<processor name="MyClusterCheater"/>
. . .
</execute>

In the definition of a parameter not only its name and value is specified but also the type of the expected input(s).


!--##########################################
    #                                        #
 <<O>>  Difference Topic Marlin (r1.1 - 02 Feb 2009 - Main.iglesias)
Line: 1 to 1
Added:
>
>
META TOPICPARENT WebHome

2.a.i. Marlin

Ahora ya puedo lanzar Marlin desde cualquier directorio.

Marlin –h 
Marlin -h                     print this help information
   Marlin -?                     print this help information
   Marlin -x                     print an example steering file to stdout
   Marlin -c steer.xml           check the given steering file for consistency
   Marlin -f old.xml new.xml     convert old xml files to new xml files for consistency check
   Marlin -o old.steer new.xml   convert old steering file to xml steering file
   Marlin -l                     [deprecated: old format steering file example]
   Marlin -d steer.xml flow.dot  create a program flow diagram (see: http://www.graphviz.org)
Marlin -x
Marlin -x > mysteer.xml

Me genera un archivo steering de ejemplo con toda la informacion de los procesadores que llamo:

!--##########################################
    #                                        #
    #     Example steering file for marlin   #
    #                                        #
    ##########################################-->


<marlin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ilcsoft.desy.de/marlin/marlin.xsd">
 <execute>
  <processor name="MyAIDAProcessor"/>
  <processor name="MyTestProcessor"/>  
  <processor name="MyLCIOOutputProcessor"/>  
 </execute>

 <global>
  <parameter name="LCIOInputFiles"> simjob.slcio </parameter>
  <!-- limit the number of processed records (run+evt): -->  
  <parameter name="MaxRecordNumber" value="5001" />  
  <parameter name="SkipNEvents" value="0" />  
  <parameter name="SupressCheck" value="false" />  
  <parameter name="GearXMLFile"> gear_ldc.xml </parameter>  
  <parameter name="Verbosity" options="DEBUG0-4,MESSAGE0-4,WARNING0-4,ERROR0-4,SILENT"> DEBUG  </parameter> 
 </global>

 <processor name="MyAIDAProcessor" type="AIDAProcessor">
 <!--Processor that handles AIDA files. Creates on directory per processor.  Processors only need to create and fill the histograms, clouds and tuples. Needs to be the first ActiveProcessor-->
  <!-- compression of output file 0: false >0: true (default) -->
  <parameter name="Compress" type="int">1 </parameter>
  <!-- filename without extension-->
  <parameter name="FileName" type="string">aida_file </parameter>
  <!-- type of output file xml (default) or root ( only OpenScientist)-->
  <parameter name="FileType" type="string">xml </parameter>
</processor>

 <processor name="MyAbsCalibr" type="AbsCalibr">
 <!-- Calorimeter Abslute Energy Calibration-->
  <!--Calorimeter coeffs-->
  <parameter name="Coeff" type="FloatVec">33.0235 93.5682 21.1963  </parameter>
  <!--Calorimeter cuts-->
  <parameter name="Cuts" type="FloatVec">8.5e-05 8.5e-05 0.0004375  </parameter>
  <!--Number of layers in zone-->
  <parameter name="NLayer" type="IntVec">30 10 40  </parameter>
</processor>

 <processor name="MyCEDViewer" type="CEDViewer">
 <!--CEDViewer: event display of LCIO objects  - based on CED by A.Zhelezov.-->
  <!--collection to be displayed ( ColName, marker type[0-2], size)-->
  <!--parameter name="DrawCollection" type="StringVec">DrawCollection 0 3  </parameter-->
</processor>

 <processor name="MyCalorimeterFinalStage" type="CalorimeterFinalStage">
 <!--CalorimeterFinalStage -->
  <!--Cluster Input Collection Name-->
  <parameter name="ClusterInputCollection" type="string" lcioInType="Cluster">CalorimeterStage3Clusters </parameter>
  <!--Cluster Output Collection Name-->
  <parameter name="ClusterOutputCollection" type="string" lcioOutType="Cluster">ClustersMagic </parameter>
  <!--Minimal Hits in Cluster-->
  <parameter name="MinimalHits" type="int">0 </parameter>
</processor>

 <processor name="MyClusterCheater" type="ClusterCheater">
 <!--Creates true clusters...-->
  <!--Calorimeter Collection Names-->
  <parameter name="CaloCollections" type="StringVec" lcioInType="CalorimeterHit">ECAL HCAL  </parameter>
  <!--SimCaloHit to CaloHit Relations Collection Name-->
  <parameter name="RelCollection" type="string" lcioInType="LCRelation">RelationCaloHit </parameter>
  <!--Collection of True Clusters-->
  <parameter name="TrueClusterCollection" type="string" lcioOutType="Cluster">TrueClusters </parameter>
  <!--Relation Collection Cluster to MCP-->
  <parameter name="TrueClusterToMCPCollection" type="string" lcioOutType="LCRelation">TrueClusterToMCP </parameter>
</processor>
...
A continuacion chequeo que el steering tenga consistencia poniendo:
Marlin -c mysteer.xml
Y obtengo el siguiente mensaje de error:
Error opening GEAR file [gear_ldc.xml]. File doesn't exist, or link is not valid!!
Error opening LCIO file [simjob.slcio]. File doesn't exist, or link is not valid!!
Esto es debido a que estos ficheros no estan definidos en el directorio que trabajo (install/my_v01-04), por lo que debo realizar un link suave para tenerlos:
  • El fichero gear me define la geometria del detector utilizada durante la simulacion de las muestras de muones. En este caso ha sido la ILD_OO y se encuentra en los .tar.gz de las muestras de muones, por lo que puedo crear un enlace suave que apunte a cualquiera de los GearOutput?.xml que me descarge en dichas muestras:
       ln -s /donde_se_encuentra_el_GEAROUTPUT/GearOutput.xml gear_ldc.xml
    
    En mi caso:
       ln -s ../Samples/M-06-07-pre01_ppr002_muon_Theta1-40_1-50GeV_ILD_00_LCP_SinglePar_0010/GearOutput.xml gear_ldc.xml
    
  • Con respecto al fichero slcio son los ficheros de entrada que contienen en formato LCIO la informacion de la muestra que vaya a analizar, en este caso, cualquiera de las muestras de muones que me baje, por lo que tambine hare un link suave a alguno de los ficheros lcio.
       ln -s ../Samples/SinglePar_muon_Theta1-40_1-50GeV_0001.slcio simjob.slcio.
    
NOTA: Evidentemente puedo ponerle el nombre que quiera a los ficheros xml y lcio, pero mantenido los nombre gear_ldc.xml y simjob.slcio no tengo que modificar el fichero steering que me da Marlin en la sección :
<parameter name="LCIOInputFiles"> simjob.slcio </parameter> ..
<parameter name="GearXMLFile"> gear_ldc.xml </parameter> ..
</global>
Al realizar de nuevo:
Marlin -c mysteer.xml
Ya no me aparece el error en los ficheros simjob.slcio y gear_ldc.xml, pero me aparecen la mayoria de los procesos inactivos:
LCIO Available Collections:
ECAL007                                 SimCalorimeterHit             simjob.slcio
FinalMCParticles                        MCParticle                    simjob.slcio
MCParticle                              MCParticle                    simjob.slcio
SiliconRawHitExample                    TrackerPulse                  simjob.slcio
TPC4711                                 SimTrackerHit                 simjob.slcio
TPC4711UserFloatExtension               LCFloatVec                    simjob.slcio
TPC4711UserIntExtension                 LCIntVec                      simjob.slcio
TPCRawFADCMCTruth                       LCRelation                    simjob.slcio
TrackerDataExample                      TrackerData                   simjob.slcio
TrackerPulseExample                     TrackerPulse                  simjob.slcio
TrackerRawDataExample                   TrackerRawData                simjob.slcio
AdditionalExtension                     LCFloatVec                    simjob.slcio

Active Processors:
MyAIDAProcessor                         AIDAProcessor                  [ Active ] 
MyTestProcessor                         TestProcessor                  [ Active ] 
MyLCIOOutputProcessor                   LCIOOutputProcessor            [ Active ] 

Inactive Processors:
MyAbsCalibr                             AbsCalibr                      [ Inactive ] 
MyCEDViewer                             CEDViewer                      [ Inactive ] 
MyCalorimeterFinalStage                 CalorimeterFinalStage          [ Inactive ] 
MyClusterCheater                        ClusterCheater                 [ Inactive ] 
MyClusterCheater5_3                     ClusterCheater5_3              [ Inactive ] 
MyConditionsProcessor                   ConditionsProcessor            [ Inactive ] 
MyConversionTagger                      ConversionTagger               [ Inactive ] 
MyConvertToMIPScale                     ConvertToMIPScale              [ Inactive ] 
MyCurlKillerProcessor                   CurlKillerProcessor            [ Inactive ] 
MyCutOnCosThetaQQbar                    CutOnCosThetaQQbar             [ Inactive ] 
MyCutOnGEANT4Bug                        CutOnGEANT4Bug                 [ Inactive ] 
MyDSTAIDAPlotProcessor                  DSTAIDAPlotProcessor           [ Inactive ] 
MyDSTCollectionProcessor                DSTCollectionProcessor         [ Inactive ] 
MyDSTPlotProcessor                      DSTPlotProcessor               [ Inactive ]
MyDrawMCParticles                       DrawMCParticles                [ Inactive ]
MyEMShowerFinder                        EMShowerFinder                 [ Inactive ]
MyETDDigiProcessor                      ETDDigiProcessor               [ Inactive ]
....

No Errors were found :)

Esto es debido a que la variable de entorno MARLIN_DLL carga las librerias dinámicas que le digas, pero eso no quiere decir que ejecute nada de ellas. Para ejecutar algún módulo que esté contenido en alguna librería hay que activarlo en la sección "execute" del fichero steer de Marlin. Por tanto, que un procesador esté inactivo, no es ningún error, está inactivo porque esta cargado en memoria pero no se hace uso de él. Por ejemplo, supón que cargas la librería que contiene el procesador del visor:

 export MARLIN_DLL=/mnt/data2/ilcsoft/ilcinstall_prueba/ilcinstall/my_v01-04/CEDViewer/v00-06/lib/libCEDViewer.so
ahora, la librería está cargada en memoria, pero para poder ver los sucesos en el visor, hay que activarlo mediante su inclusión en la sección execute (del fichero steer)en el que aparecen por defecto los siguientes procesadores activos:
<execute>
  <processor name="MyAIDAProcessor"/>
  <processor name="MyTestProcessor"/>  
  <processor name="MyLCIOOutputProcessor"/>  
 </execute>
Por lo que para activar el visor CEDViewer lo añado en el listado anterior de procesadores activos:
<execute>
  <processor name="MyAIDAProcessor"/>
  <processor name="MyTestProcessor"/>  
  <processor name="MyCEDViewer" />
  <processor name="MyLCIOOutputProcessor"/>  
 </execute>
NOTA: Para el caso del CEDViewer es importante activarlo despues del resto de procesadores y antes del LCIOOutputProcessor.

Ahora, si lanzo Marlin, veré el procesador activo:

Active Processors:
MyAIDAProcessor                         AIDAProcessor                  [ Active ]
MyTestProcessor                         TestProcessor                  [ Active ]
MyCEDViewer                             CEDViewer                      [ Active ]
MyLCIOOutputProcessor                   LCIOOutputProcessor            [ Active ]

-- Main.iglesias - 02 Feb 2009

Revision r1.1 - 02 Feb 2009 - 11:21 - Main.iglesias
Revision r1.2 - 22 Sep 2009 - 11:12 - Main.iglesias