9 modified files
lcio/doc
diff -u -r1.72 -r1.73
--- versions.readme 7 Nov 2008 15:58:05 -0000 1.72
+++ versions.readme 10 Dec 2008 08:10:59 -0000 1.73
@@ -3,6 +3,15 @@
---------------------------------------------------------------
=====================
+ v01-11
+=====================
+ - direct (random) access made optional (C++):
+ use LCFactory::getInstance()->createLCReader(LCReader::directAccess) if
+ direct access is need (default is off, i.e. 'no recreating of event map'
+ when opening a file )
+
+
+=====================
v01-10-03
=====================
- bug fix patch release:
lcio/src/aid/IO
diff -u -r1.1.20.2 -r1.1.20.3
--- ILCFactory.aid 9 Dec 2008 11:32:31 -0000 1.1.20.2
+++ ILCFactory.aid 10 Dec 2008 08:10:59 -0000 1.1.20.3
@@ -1,8 +1,5 @@
package hep.lcio.io;
-@ifdef cpp
-@cpp{class LCReader; }
-
/**Factory to create LCWriter and Reader object for the known data
* formats, e.g. SIO. The implementation (LCFactory) will be a singleton class
* that knows all concrete reader/writer implementations.
@@ -12,20 +9,26 @@
*/
public interface ILCFactory {
- /**Creates an LCWriter object for the current persistency type.
- */
- public LCWriter* createLCWriter() ;
-
- /**Creates an LCReader object for the current persistency type.
- */
- public LCReader* createLCReader(int lcReaderFlag=0) ;
-
- // @ifdef cpp
- // @cpp{
- // virtual LCReader * createLCReader(const bool) = 0;
- // }
- // @else
- // public LCReader* createLCReader() ;
- // @endif
-
+
+// /** Returns the instance of the factory.
+// * In the future we need to specify the data format here...
+// * This doesn't work for java as an interface can't have static members ...
+// */
+ // this needs more thought ....
+// @ifdef cpp
+// @cpp{ static LCFactory* getInstance() ;
+// }
+// @else
+// public LCFactory getInstance() ;
+// @endif
+
+
+/**Creates an LCWriter object for the current persistency type.
+ */
+ public LCWriter* createLCWriter() ;
+
+/**Creates an LCReader object for the current persistency type.
+ */
+ public LCReader* createLCReader(int readerFlag=0) ;
+
}
lcio/src/aid/IO
diff -u -r1.13 -r1.14
--- LCReader.aid 21 Oct 2005 13:53:19 -0000 1.13
+++ LCReader.aid 10 Dec 2008 08:10:59 -0000 1.14
@@ -11,6 +11,15 @@
*/
public interface LCReader {
+ /** Configuration flags for the LCReader instance - to be used with LCFactory::createLCReader(). */
+@ifdef cpp
+@cpp{
+ static const int directAccess = 0x00000001 << 0 ;
+}@else
+ public static const int directAccess = 0x00000001 ;
+@endif
+
+
/** Opens a file for reading (read-only).
*
* @throws IOException
lcio/src/cpp/include/IOIMPL
diff -u -r1.2 -r1.3
--- LCFactory.h 15 Apr 2005 08:37:40 -0000 1.2
+++ LCFactory.h 10 Dec 2008 08:10:59 -0000 1.3
@@ -1,13 +1,6 @@
// -*- C++ -*-
-/**Factory to create LCWriter and Reader object for the known data
- * formats, e.g. SIO. Singleton class
- * that knows all concrete reader/writer implementations.
- *
- * @author gaede
- * @version Mar 10, 2003
- */
-#ifndef IOIMPL_LCFACTORY_H
-#define IOIMPL_LCFACTORY_H 1
+#ifndef IOIMPL_LCFactory_h
+#define IOIMPL_LCFactory_h 1
#include "IO/ILCFactory.h"
@@ -16,6 +9,13 @@
namespace IOIMPL {
+/**Factory to create LCWriter and Reader object for the known data
+ * formats, e.g. SIO. Singleton class
+ * that knows all concrete reader/writer implementations.
+ *
+ * @author gaede
+ * @version Mar 10, 2003
+ */
class LCFactory : public IO::ILCFactory {
@@ -38,9 +38,11 @@
*/
virtual IO::LCWriter * createLCWriter() ;
- /**Creates an LCReader object for the current persistency type.
+ /** Creates an LCReader object for the current persistency type.
+ * lcReaderFlag: configuration options for the LCReader object -
+ * combine multible options with '|'. So far only LCReader::directAccess.
*/
- virtual IO::LCReader * createLCReader() ;
+ virtual IO::LCReader * createLCReader(int lcReaderFlag=0 ) ;
private:
@@ -49,4 +51,4 @@
}; // class
} // namespace IOIMPL
-#endif /* ifndef IOIMPL_LCFACTORY_H */
+#endif /* ifndef IOIMPL_LCFactory_h */
lcio/src/cpp/include/SIO
diff -u -r1.25 -r1.26
--- SIOReader.h 16 Oct 2007 16:22:45 -0000 1.25
+++ SIOReader.h 10 Dec 2008 08:10:59 -0000 1.26
@@ -34,7 +34,7 @@
/** Default constructor.
*/
- SIOReader() ;
+ SIOReader( int lcReaderFlag=0 ) ;
// Destructor
virtual ~SIOReader() ;
@@ -179,6 +179,7 @@
unsigned int _currentFileIndex ;
EventMap _evtMap ;
+ const bool _readEventMap ;
}; // class
} // namespace
lcio/src/cpp/src/EXAMPLE
diff -u -r1.10 -r1.11
--- dumpevent.cc 28 May 2008 14:02:09 -0000 1.10
+++ dumpevent.cc 10 Dec 2008 08:10:59 -0000 1.11
@@ -1,4 +1,5 @@
#include "lcio.h"
+#include <stdio.h>
#include "IO/LCReader.h"
#include "IMPL/LCTOOLS.h"
@@ -67,7 +68,11 @@
CellIDDecoder<CalorimeterHit>::setDefaultEncoding("M:3,S-1:3,I:9,J:9,K-1:6") ;
CellIDDecoder<RawCalorimeterHit>::setDefaultEncoding("M:3,S-1:3,I:9,J:9,K-1:6") ;
- LCReader* lcReader = LCFactory::getInstance()->createLCReader() ;
+ LCReader* lcReader ;
+ if ( getenv ("LCIO_DIRECT_ACCESS") !=0 )
+ lcReader = LCFactory::getInstance()->createLCReader(LCReader::directAccess) ;
+ else
+ lcReader = LCFactory::getInstance()->createLCReader() ;
LCEvent* evt(0) ;
lcio/src/cpp/src/IOIMPL
diff -u -r1.2 -r1.3
--- LCFactory.cc 15 Apr 2005 08:37:48 -0000 1.2
+++ LCFactory.cc 10 Dec 2008 08:10:59 -0000 1.3
@@ -41,9 +41,10 @@
return new SIOWriter ;
}
- LCReader * LCFactory::createLCReader() {
+ LCReader * LCFactory::createLCReader(int lcReaderFlag) {
+
// so far we just create SIO objects
- return new SIOReader ;
+ return new SIOReader( lcReaderFlag );
}
lcio/src/cpp/src/SIO
diff -u -r1.51 -r1.52
--- SIOReader.cc 28 May 2008 14:02:09 -0000 1.51
+++ SIOReader.cc 10 Dec 2008 08:10:59 -0000 1.52
@@ -57,7 +57,8 @@
//#define DEBUG 1
- SIOReader::SIOReader()
+ SIOReader::SIOReader( int lcReaderFlag ) :
+ _readEventMap( lcReaderFlag & LCReader::directAccess )
// :
// _myFilenames(0),
// _currentFileIndex(0)
@@ -187,7 +188,9 @@
// else
// eh->setEventPtr( _evtP ) ;
- getEventMap() ;
+ if( _readEventMap ){
+ getEventMap() ;
+ }
}
lcio/src/java/hep/lcio/implementation/sio
diff -u -r1.5 -r1.6
--- SIOFactory.java 4 Sep 2003 04:27:00 -0000 1.5
+++ SIOFactory.java 10 Dec 2008 08:10:59 -0000 1.6
@@ -25,7 +25,12 @@
{
return new SIOLCReader();
}
+ public LCReader createLCReader(int lcReaderFlag)
+ { //fg: dumy implementation - could use readerFlag in the future (now only C++)
+ return new SIOLCReader();
+ }
+
public LCWriter createLCWriter()
{
return new SIOLCWriter();
CVSspam 0.2.8