GaudiTuples.h
Go to the documentation of this file.00001
00002
00003 #ifndef GAUDIALG_GAUDITUPLES_H
00004 #define GAUDIALG_GAUDITUPLES_H 1
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "GaudiKernel/ClassID.h"
00020
00021
00022
00023 #include "GaudiAlg/Maps.h"
00024 #include "GaudiAlg/Tuple.h"
00025 #include "GaudiAlg/TupleObj.h"
00026
00035
00036 template <class PBASE>
00037 class GAUDI_API GaudiTuples: public PBASE
00038 {
00039 public:
00040
00042 typedef GaudiAlg::HistoID HistoID;
00044 typedef Tuples::Tuple Tuple ;
00046 typedef GaudiAlg::TupleID TupleID ;
00048 typedef GaudiAlg::TupleMapTitle TupleMapTitle ;
00050 typedef GaudiAlg::TupleMapID TupleMapID ;
00051
00052 public:
00053
00085 Tuple nTuple ( const std::string& title ,
00086 const CLID& clid = CLID_ColumnWiseTuple ) const ;
00087
00126 Tuple nTuple ( const TupleID& ID ,
00127 const std::string& title ,
00128 const CLID& clid = CLID_ColumnWiseTuple ) const ;
00129
00160 Tuple evtCol ( const std::string& title ,
00161 const CLID& clid = CLID_ColumnWiseTuple ) const ;
00162
00201 Tuple evtCol ( const TupleID& ID ,
00202 const std::string& title ,
00203 const CLID& clid = CLID_ColumnWiseTuple ) const ;
00204
00205 public:
00206
00208 bool produceNTuples () const { return m_produceNTuples ; }
00210 bool splitNTupleDir () const { return m_splitNTupleDir ; }
00212 const std::string& nTupleLUN () const { return m_nTupleLUN ; }
00214 const std::string& nTupleTopDir () const { return m_nTupleTopDir ; }
00216 const std::string& nTupleDir () const { return m_nTupleDir ; }
00218 TupleID::NumericID nTupleOffSet () const { return m_nTupleOffSet ; }
00220 std::string nTuplePath () const
00221 {
00222 const std::string path = nTupleLUN() + "/" + nTupleTopDir() + nTupleDir();
00223 return ( splitNTupleDir() ? dirHbookName( path ) : path ) ;
00224 }
00226 bool produceEvtCols () const { return m_produceEvtCols ; }
00228 bool splitEvtColDir () const { return m_splitEvtColDir ; }
00230 const std::string& evtColLUN () const { return m_evtColLUN ; }
00232 const std::string& evtColTopDir () const { return m_evtColTopDir ; }
00234 const std::string& evtColDir () const { return m_evtColDir ; }
00236 TupleID::NumericID evtColOffSet () const { return m_evtColOffSet ; }
00238 std::string evtColPath () const
00239 {
00240 std::string path = evtColLUN() + "/" + evtColTopDir() + evtColDir();
00241 return ( splitEvtColDir() ? dirHbookName( path ) : path );
00242 }
00244 bool tuplesPrint () const { return m_tuplesPrint ; }
00246 bool evtColsPrint () const { return m_evtColsPrint ; }
00247
00248 public :
00249
00253 long printTuples () const ;
00257 long printEvtCols () const ;
00258
00259 public :
00260
00262 bool nTupleExists ( const TupleID& ID ) const;
00264 bool evtColExists ( const TupleID& ID ) const;
00265
00266 protected:
00267
00269 const TupleMapTitle& nTupleMapTitle () const { return m_nTupleMapTitle ; }
00271 const TupleMapTitle& evtColMapTitle () const { return m_evtColMapTitle ; }
00273 const TupleMapID& nTupleMapID () const { return m_nTupleMapID ; }
00275 const TupleMapID& evtColMapID () const { return m_evtColMapID ; }
00276
00277 protected:
00278
00286 virtual Tuples::TupleObj*
00287 createNTuple ( const std::string& name ,
00288 NTuple::Tuple* tuple ,
00289 const CLID& clid ) const ;
00297 virtual Tuples::TupleObj*
00298 createEvtCol ( const std::string& name ,
00299 NTuple::Tuple* tuple ,
00300 const CLID& clid ) const ;
00301
00302 public:
00303
00305 GaudiTuples ( const std::string & name,
00306 ISvcLocator * pSvcLocator );
00308 GaudiTuples ( const std::string& type ,
00309 const std::string& name ,
00310 const IInterface* parent );
00312 virtual ~GaudiTuples();
00313
00314 protected:
00315
00319 virtual StatusCode initialize ();
00323 virtual StatusCode finalize ();
00324
00325 private:
00326
00328 inline void initGaudiTuplesConstructor()
00329 {
00330 m_produceNTuples = true ;
00331 m_splitNTupleDir = false ;
00332 m_nTupleLUN = "FILE1" ;
00333 m_nTupleTopDir = "" ;
00334 m_nTupleDir = this->name() ;
00335 m_nTupleOffSet = 0 ;
00336
00337 m_produceEvtCols = false ;
00338 m_splitEvtColDir = false ;
00339 m_evtColLUN = "EVTCOL" ;
00340 m_evtColTopDir = "" ;
00341 m_evtColDir = this->name() ;
00342 m_evtColOffSet = 0 ;
00343
00344 m_tuplesPrint = true ;
00345 m_evtColsPrint = false ;
00346
00347 this -> declareProperty
00348 ( "NTupleProduce" , m_produceNTuples ,
00349 "General switch to enable/disable N-tuples" ) ;
00350 this -> declareProperty
00351 ( "NTuplePrint" , m_tuplesPrint ,
00352 "Print N-tuple statistics" )
00353 -> declareUpdateHandler ( &GaudiTuples<PBASE>::printNTupleHandler , this ) ;
00354 this -> declareProperty
00355 ( "NTupleSplitDir" , m_splitNTupleDir ,
00356 "Split long directory names into short pieces (suitable for HBOOK)" ) ;
00357 this -> declareProperty
00358 ( "NTupleOffSet" , m_nTupleOffSet ,
00359 "Offset for numerical N-tuple ID" ) ;
00360 this -> declareProperty
00361 ( "NTupleLUN" , m_nTupleLUN ,
00362 "Logical File Unit for N-tuples" ) ;
00363 this -> declareProperty
00364 ( "NTupleTopDir" , m_nTupleTopDir ,
00365 "Top-level directory for N-Tuples") ;
00366 this -> declareProperty
00367 ( "NTupleDir" , m_nTupleDir ,
00368 "Subdirectory for N-Tuples" ) ;
00369
00370 this -> declareProperty
00371 ( "EvtColsProduce" , m_produceEvtCols ,
00372 "General switch to enable/disable Event Tag Collections" ) ;
00373 this -> declareProperty
00374 ( "EvtColsPrint" , m_evtColsPrint ,
00375 "Print statistics for Event Tag Collections " )
00376 -> declareUpdateHandler ( &GaudiTuples<PBASE>::printEvtColHandler , this ) ;
00377 this -> declareProperty
00378 ( "EvtColSplitDir" , m_splitEvtColDir ,
00379 "Split long directory names into short pieces" ) ;
00380 this -> declareProperty
00381 ( "EvtColOffSet" , m_evtColOffSet ,
00382 "Offset for numerical N-tuple ID" ) ;
00383 this -> declareProperty
00384 ( "EvtColLUN" , m_evtColLUN ,
00385 "Logical File Unit for Event Tag Collections" ) ;
00386 this -> declareProperty
00387 ( "EvtColTopDir" , m_evtColTopDir ,
00388 "Top-level directory for Event Tag Collections" ) ;
00389 this -> declareProperty
00390 ( "EvtColDir" , m_evtColDir ,
00391 "Subdirectory for Event Tag Collections" ) ;
00392
00393 }
00394
00395 private:
00396
00398 void printNTupleHandler ( Property& ) ;
00400 void printEvtColHandler ( Property& ) ;
00401
00402 private:
00403
00405 bool m_produceNTuples ;
00407 bool m_splitNTupleDir ;
00409 std::string m_nTupleLUN ;
00411 std::string m_nTupleTopDir ;
00413 std::string m_nTupleDir ;
00415 TupleID::NumericID m_nTupleOffSet ;
00416
00418 bool m_produceEvtCols ;
00420 bool m_splitEvtColDir ;
00422 std::string m_evtColLUN ;
00424 std::string m_evtColTopDir ;
00426 std::string m_evtColDir ;
00428 TupleID::NumericID m_evtColOffSet ;
00429
00431 bool m_tuplesPrint ;
00433 bool m_evtColsPrint ;
00434
00436 mutable TupleMapTitle m_nTupleMapTitle ;
00438 mutable TupleMapID m_nTupleMapID ;
00439
00441 mutable TupleMapTitle m_evtColMapTitle ;
00443 mutable TupleMapID m_evtColMapID ;
00444
00445 };
00446
00447
00448
00449 #endif // GAUDIALG_GAUDITUPLES_H
00450