Skip to content
Snippets Groups Projects
GenWriter.cpp 1.17 KiB
Newer Older
fangwx@ihep.ac.cn's avatar
V3
fangwx@ihep.ac.cn committed
#include "GenWriter.h"
#include "GenEvent.h"

#include "podio/EventStore.h" //podio
#include "podio/ROOTWriter.h"


#include "plcio/MCParticleCollection.h"//plico
#include "plcio/EventHeaderCollection.h"


GenWriter::GenWriter(string name){
    m_output_name = name;
    store  = new podio::EventStore();
    writer = new podio::ROOTWriter(m_output_name, store);
    ehc   =  &store->create<plcio::EventHeaderCollection>("EvtHeaders");
    mcc   =  &store->create<plcio::MCParticleCollection>("MCParticles");

    writer->registerForWrite("EvtHeaders");
    writer->registerForWrite("MCParticles");
}

GenWriter::~GenWriter(){
}

bool GenWriter::mutate(MyHepMC::GenEvent& event){
    std::cout << "write mc info for event "<< event.getID() << ", mc size ="<< event.m_mc_vec.size() <<  std::endl;
    mcc=&event.m_mc_vec;
    auto header = plcio::EventHeader(event.getID(), event.getRun(), event.getTime(), event.getName());
    ehc->push_back(header);
    writer->writeEvent();
    store->clearCollections();
    return true;
}

bool GenWriter::configure(){
return true;
}

bool GenWriter::finish(){
    writer->finish();
    std::cout<<"Saved root "<<m_output_name<<std::endl;
    return true;
}