Loading code/CRunAction.cc +8 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ #include "THELGlobalMemory.hh" #include "SQLliteOutput_XYZ.hh" #include "FITSOutput_XYZ.hh" #include "MongoOutput_XYZ.hh" #if defined(GEANT4_11_1) #include "G4SystemOfUnits.hh" Loading Loading @@ -150,6 +151,13 @@ void CRunAction::EndOfRunAction(const G4Run* ) { gm.sqlite3_xyz->close(); } #endif #ifdef MONGODB if(gm.enableWriteMONGODB && gm.enableWriteXYZ) { gm.mongodb_xyz->close(); } #endif } } Loading code/CXYZSD.cc +0 −2 Original line number Diff line number Diff line Loading @@ -403,13 +403,11 @@ void CXYZSD::EndOfEvent(G4HCofThisEvent* HCE) { } #endif G4cout << MONGODB << G4endl; #ifdef MONGODB if(gm.enableWriteMONGODB && gm.enableWriteXYZ) { if(NbHits > 0) { for (G4int i=0; i<NbHits; i++) { CXYZHit* hit = (*xyzhitCollection)[i]; //gm.root_xyz->open(); gm.mongodb_xyz->writeData(hit, i); } } Loading code/MongoOutput_XYZ.cc +17 −16 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <mongocxx/instance.hpp> #include <mongocxx/uri.hpp> #include <mongocxx/exception/exception.hpp> #include <iomanip> #include <sstream> #include <string> Loading @@ -31,9 +32,8 @@ using bsoncxx::builder::basic::make_document; #define G4_TYPE G4float static mongocxx::instance instance{}; MongoOutput_XYZ::MongoOutput_XYZ() : client(mongocxx::uri("mongodb://localhost:27017")){ MongoOutput_XYZ::MongoOutput_XYZ(){ //current_event_id = -1; lastevent = -1; nmaxevents = 0; Loading @@ -60,12 +60,6 @@ MongoOutput_XYZ::MongoOutput_XYZ() : client(mongocxx::uri("mongodb://localhost:2 gm.config->readInto(removeWorldEvent, "IOXYZ.removeWorldEvent"); cout << "IOXYZ.removeWorldEvent: " << removeWorldEvent << endl; //INIT outputXYZCollectionNameMongoDB_base = (char*)gm.GetOutputMongoXYZCollectionName().data(); auto database = client[database_name]; collection = database[outputXYZCollectionNameMongoDB_base]; newfile = true; nrows_file = 0; Loading Loading @@ -188,12 +182,16 @@ void MongoOutput_XYZ::writeData(CXYZHit* hitting, G4int i) { gtime_exit = time; //18 // Construct MongoDB document from data //auto client = pool.acquire(); // Get thread-safe client //auto database = (*client)[database_name]; outputXYZCollectionNameMongoDB_base = (char*)gm.GetOutputMongoXYZCollectionName().data(); //collection = database[outputXYZCollectionNameMongoDB_base]; /* vector<bsoncxx::document::value> documents; documents.push_back(make_document(kvp("EVT_ID", "prova1"))); documents.push_back(make_document(kvp("TRK_ID", "prova2"))); */ //auto client = pool.acquire(); //auto database = client[database_name]; auto client = pool.acquire(); // Get thread-safe client auto database = (*client)[database_name]; auto collection = database[outputXYZCollectionNameMongoDB_base]; bsoncxx::builder::basic::document doc{}; doc.append(kvp("EVT_ID", std::to_string(evtid))); Loading Loading @@ -224,8 +222,11 @@ void MongoOutput_XYZ::writeData(CXYZHit* hitting, G4int i) { doc.append(kvp("PROCESS_ID", std::to_string(tproc))); doc.append(kvp("PROCESS_NAME", tprocname)); if (!doc.view().empty()) { collection.insert_one(doc.view()); } else { cerr << "Error: Empty BSON document" << endl; } nrows_file++; } Loading code/MongoOutput_XYZ.hh +9 −3 Original line number Diff line number Diff line Loading @@ -8,16 +8,16 @@ // MongoDB C++ driver headers #include <mongocxx/client.hpp> #include <mongocxx/instance.hpp> #include <mongocxx/pool.hpp> #include <mongocxx/uri.hpp> #include <bsoncxx/json.hpp> class MongoOutput_XYZ { private: mongocxx::client client; mongocxx::collection collection; //mongocxx::client client; //mongocxx::collection collection; G4String database_name = "bogemms"; public: MongoOutput_XYZ(); Loading @@ -32,6 +32,12 @@ public: G4String outputXYZCollectionNameMongoDB_base; G4String database_name = "bogemms"; mongocxx::instance instance{}; mongocxx::uri uri{"mongodb://localhost:27017/?minPoolSize=1&maxPoolSize=1000"}; mongocxx::pool pool{uri}; protected: Loading Loading
code/CRunAction.cc +8 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ #include "THELGlobalMemory.hh" #include "SQLliteOutput_XYZ.hh" #include "FITSOutput_XYZ.hh" #include "MongoOutput_XYZ.hh" #if defined(GEANT4_11_1) #include "G4SystemOfUnits.hh" Loading Loading @@ -150,6 +151,13 @@ void CRunAction::EndOfRunAction(const G4Run* ) { gm.sqlite3_xyz->close(); } #endif #ifdef MONGODB if(gm.enableWriteMONGODB && gm.enableWriteXYZ) { gm.mongodb_xyz->close(); } #endif } } Loading
code/CXYZSD.cc +0 −2 Original line number Diff line number Diff line Loading @@ -403,13 +403,11 @@ void CXYZSD::EndOfEvent(G4HCofThisEvent* HCE) { } #endif G4cout << MONGODB << G4endl; #ifdef MONGODB if(gm.enableWriteMONGODB && gm.enableWriteXYZ) { if(NbHits > 0) { for (G4int i=0; i<NbHits; i++) { CXYZHit* hit = (*xyzhitCollection)[i]; //gm.root_xyz->open(); gm.mongodb_xyz->writeData(hit, i); } } Loading
code/MongoOutput_XYZ.cc +17 −16 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <mongocxx/instance.hpp> #include <mongocxx/uri.hpp> #include <mongocxx/exception/exception.hpp> #include <iomanip> #include <sstream> #include <string> Loading @@ -31,9 +32,8 @@ using bsoncxx::builder::basic::make_document; #define G4_TYPE G4float static mongocxx::instance instance{}; MongoOutput_XYZ::MongoOutput_XYZ() : client(mongocxx::uri("mongodb://localhost:27017")){ MongoOutput_XYZ::MongoOutput_XYZ(){ //current_event_id = -1; lastevent = -1; nmaxevents = 0; Loading @@ -60,12 +60,6 @@ MongoOutput_XYZ::MongoOutput_XYZ() : client(mongocxx::uri("mongodb://localhost:2 gm.config->readInto(removeWorldEvent, "IOXYZ.removeWorldEvent"); cout << "IOXYZ.removeWorldEvent: " << removeWorldEvent << endl; //INIT outputXYZCollectionNameMongoDB_base = (char*)gm.GetOutputMongoXYZCollectionName().data(); auto database = client[database_name]; collection = database[outputXYZCollectionNameMongoDB_base]; newfile = true; nrows_file = 0; Loading Loading @@ -188,12 +182,16 @@ void MongoOutput_XYZ::writeData(CXYZHit* hitting, G4int i) { gtime_exit = time; //18 // Construct MongoDB document from data //auto client = pool.acquire(); // Get thread-safe client //auto database = (*client)[database_name]; outputXYZCollectionNameMongoDB_base = (char*)gm.GetOutputMongoXYZCollectionName().data(); //collection = database[outputXYZCollectionNameMongoDB_base]; /* vector<bsoncxx::document::value> documents; documents.push_back(make_document(kvp("EVT_ID", "prova1"))); documents.push_back(make_document(kvp("TRK_ID", "prova2"))); */ //auto client = pool.acquire(); //auto database = client[database_name]; auto client = pool.acquire(); // Get thread-safe client auto database = (*client)[database_name]; auto collection = database[outputXYZCollectionNameMongoDB_base]; bsoncxx::builder::basic::document doc{}; doc.append(kvp("EVT_ID", std::to_string(evtid))); Loading Loading @@ -224,8 +222,11 @@ void MongoOutput_XYZ::writeData(CXYZHit* hitting, G4int i) { doc.append(kvp("PROCESS_ID", std::to_string(tproc))); doc.append(kvp("PROCESS_NAME", tprocname)); if (!doc.view().empty()) { collection.insert_one(doc.view()); } else { cerr << "Error: Empty BSON document" << endl; } nrows_file++; } Loading
code/MongoOutput_XYZ.hh +9 −3 Original line number Diff line number Diff line Loading @@ -8,16 +8,16 @@ // MongoDB C++ driver headers #include <mongocxx/client.hpp> #include <mongocxx/instance.hpp> #include <mongocxx/pool.hpp> #include <mongocxx/uri.hpp> #include <bsoncxx/json.hpp> class MongoOutput_XYZ { private: mongocxx::client client; mongocxx::collection collection; //mongocxx::client client; //mongocxx::collection collection; G4String database_name = "bogemms"; public: MongoOutput_XYZ(); Loading @@ -32,6 +32,12 @@ public: G4String outputXYZCollectionNameMongoDB_base; G4String database_name = "bogemms"; mongocxx::instance instance{}; mongocxx::uri uri{"mongodb://localhost:27017/?minPoolSize=1&maxPoolSize=1000"}; mongocxx::pool pool{uri}; protected: Loading