@@ -228,6 +228,10 @@ class SimpleFlatTableProducerBase : public edm::stream::EDProducer<> {
228228 vars_.push_back (std::make_unique<IntVar>(vname, varPSet));
229229 else if (type == " uint" )
230230 vars_.push_back (std::make_unique<UIntVar>(vname, varPSet));
231+ else if (type == " int64" )
232+ vars_.push_back (std::make_unique<Int64Var>(vname, varPSet));
233+ else if (type == " uint64" )
234+ vars_.push_back (std::make_unique<UInt64Var>(vname, varPSet));
231235 else if (type == " float" )
232236 vars_.push_back (std::make_unique<FloatVar>(vname, varPSet));
233237 else if (type == " double" )
@@ -264,10 +268,10 @@ class SimpleFlatTableProducerBase : public edm::stream::EDProducer<> {
264268 variable.add <std::string>(" doc" )->setComment (" few words description of the branch content" );
265269 variable.addUntracked <bool >(" lazyEval" , false )
266270 ->setComment (" if true, can use methods of inheriting classes in `expr`. Can cause problems with threading." );
267- variable.ifValue (
268- edm::ParameterDescription<std::string>(
269- " type " , " int " , true , edm::Comment ( " the c++ type of the branch in the flat table " )),
270- edm::allowedValues<std::string>( " int" , " uint" , " float" , " double" , " uint8" , " int16" , " uint16" , " bool" ));
271+ variable.ifValue (edm::ParameterDescription<std::string>(
272+ " type " , " int " , true , edm::Comment ( " the c++ type of the branch in the flat table " )),
273+ edm::allowedValues<std::string>(
274+ " int" , " uint" , " int64 " , " uint64 " , " float" , " double" , " uint8" , " int16" , " uint16" , " bool" ));
271275 variable.addOptionalNode (
272276 edm::ParameterDescription<int >(
273277 " precision" , true , edm::Comment (" the precision with which to store the value in the flat table" )) xor
@@ -306,6 +310,8 @@ class SimpleFlatTableProducerBase : public edm::stream::EDProducer<> {
306310
307311 typedef FuncVariable<T, StringObjectFunction<T>, int32_t > IntVar;
308312 typedef FuncVariable<T, StringObjectFunction<T>, uint32_t > UIntVar;
313+ typedef FuncVariable<T, StringObjectFunction<T>, int64_t > Int64Var;
314+ typedef FuncVariable<T, StringObjectFunction<T>, uint64_t > UInt64Var;
309315 typedef FuncVariable<T, StringObjectFunction<T>, float > FloatVar;
310316 typedef FuncVariable<T, StringObjectFunction<T>, double > DoubleVar;
311317 typedef FuncVariable<T, StringObjectFunction<T>, uint8_t > UInt8Var;
@@ -336,6 +342,12 @@ class SimpleFlatTableProducer : public SimpleFlatTableProducerBase<T, edm::View<
336342 else if (type == " uint" )
337343 extvars_.push_back (
338344 std::make_unique<UIntExtVar>(vname, varPSet, this ->consumesCollector (), this ->skipNonExistingSrc_ ));
345+ else if (type == " int64" )
346+ extvars_.push_back (
347+ std::make_unique<Int64ExtVar>(vname, varPSet, this ->consumesCollector (), this ->skipNonExistingSrc_ ));
348+ else if (type == " uint64" )
349+ extvars_.push_back (
350+ std::make_unique<UInt64ExtVar>(vname, varPSet, this ->consumesCollector (), this ->skipNonExistingSrc_ ));
339351 else if (type == " float" )
340352 extvars_.push_back (
341353 std::make_unique<FloatExtVar>(vname, varPSet, this ->consumesCollector (), this ->skipNonExistingSrc_ ));
@@ -382,10 +394,10 @@ class SimpleFlatTableProducer : public SimpleFlatTableProducerBase<T, edm::View<
382394 edm::ParameterSetDescription extvariable;
383395 extvariable.add <edm::InputTag>(" src" )->setComment (" valuemap input collection to fill the flat table" );
384396 extvariable.add <std::string>(" doc" )->setComment (" few words description of the branch content" );
385- extvariable.ifValue (
386- edm::ParameterDescription<std::string>(
387- " type " , " int " , true , edm::Comment ( " the c++ type of the branch in the flat table " )),
388- edm::allowedValues<std::string>( " int" , " uint" , " float" , " double" , " uint8" , " int16" , " uint16" , " bool" ));
397+ extvariable.ifValue (edm::ParameterDescription<std::string>(
398+ " type " , " int " , true , edm::Comment ( " the c++ type of the branch in the flat table " )),
399+ edm::allowedValues<std::string>(
400+ " int" , " uint" , " int64 " , " uint64 " , " float" , " double" , " uint8" , " int16" , " uint16" , " bool" ));
389401 extvariable.addOptionalNode (
390402 edm::ParameterDescription<int >(
391403 " precision" , true , edm::Comment (" the precision with which to store the value in the flat table" )) xor
@@ -447,6 +459,8 @@ class SimpleFlatTableProducer : public SimpleFlatTableProducerBase<T, edm::View<
447459
448460 typedef ValueMapVariable<T, int32_t > IntExtVar;
449461 typedef ValueMapVariable<T, uint32_t > UIntExtVar;
462+ typedef ValueMapVariable<T, int64_t > Int64ExtVar;
463+ typedef ValueMapVariable<T, uint64_t > UInt64ExtVar;
450464 typedef ValueMapVariable<T, float > FloatExtVar;
451465 typedef ValueMapVariable<T, double , float > DoubleExtVar;
452466 typedef ValueMapVariable<T, bool > BoolExtVar;
@@ -471,6 +485,12 @@ class SimpleTypedExternalFlatTableProducer : public SimpleFlatTableProducer<T> {
471485 else if (type == " uint" )
472486 this ->typedextvars_ .push_back (
473487 std::make_unique<UIntTypedExtVar>(vname, varPSet, this ->consumesCollector (), this ->skipNonExistingSrc_ ));
488+ else if (type == " int64" )
489+ this ->typedextvars_ .push_back (
490+ std::make_unique<Int64TypedExtVar>(vname, varPSet, this ->consumesCollector (), this ->skipNonExistingSrc_ ));
491+ else if (type == " uint64" )
492+ this ->typedextvars_ .push_back (
493+ std::make_unique<UInt64TypedExtVar>(vname, varPSet, this ->consumesCollector (), this ->skipNonExistingSrc_ ));
474494 else if (type == " float" )
475495 this ->typedextvars_ .push_back (
476496 std::make_unique<FloatTypedExtVar>(vname, varPSet, this ->consumesCollector (), this ->skipNonExistingSrc_ ));
@@ -528,6 +548,8 @@ class SimpleTypedExternalFlatTableProducer : public SimpleFlatTableProducer<T> {
528548protected:
529549 typedef TypedValueMapVariable<T, V, StringObjectFunction<V>, int32_t > IntTypedExtVar;
530550 typedef TypedValueMapVariable<T, V, StringObjectFunction<V>, uint32_t > UIntTypedExtVar;
551+ typedef TypedValueMapVariable<T, V, StringObjectFunction<V>, int64_t > Int64TypedExtVar;
552+ typedef TypedValueMapVariable<T, V, StringObjectFunction<V>, uint64_t > UInt64TypedExtVar;
531553 typedef TypedValueMapVariable<T, V, StringObjectFunction<V>, float > FloatTypedExtVar;
532554 typedef TypedValueMapVariable<T, V, StringObjectFunction<V>, double > DoubleTypedExtVar;
533555 typedef TypedValueMapVariable<T, V, StringCutObjectSelector<V>, bool > BoolTypedExtVar;
@@ -559,6 +581,10 @@ class SimpleCollectionFlatTableProducer : public SimpleFlatTableProducer<T> {
559581 coltable.colvars .push_back (std::make_unique<IntVectorVar>(colvarname, colvarPSet));
560582 else if (type == " uint" )
561583 coltable.colvars .push_back (std::make_unique<UIntVectorVar>(colvarname, colvarPSet));
584+ else if (type == " int64" )
585+ coltable.colvars .push_back (std::make_unique<Int64VectorVar>(colvarname, colvarPSet));
586+ else if (type == " uint64" )
587+ coltable.colvars .push_back (std::make_unique<UInt64VectorVar>(colvarname, colvarPSet));
562588 else if (type == " float" )
563589 coltable.colvars .push_back (std::make_unique<FloatVectorVar>(colvarname, colvarPSet));
564590 else if (type == " double" )
@@ -700,6 +726,8 @@ class SimpleCollectionFlatTableProducer : public SimpleFlatTableProducer<T> {
700726
701727 using IntVectorVar = VectorVar<int32_t >;
702728 using UIntVectorVar = VectorVar<uint32_t >;
729+ using Int64VectorVar = VectorVar<int64_t >;
730+ using UInt64VectorVar = VectorVar<uint64_t >;
703731 using FloatVectorVar = VectorVar<float >;
704732 using DoubleVectorVar = VectorVar<double >;
705733 using UInt8VectorVar = VectorVar<uint8_t >;
0 commit comments