GenEvent evt(Units::GEV,Units::MM);
GenParticlePtr p1 = std::make_shared<GenParticle>( FourVector( 0.0, 0.0, 7000.0, 7000.0 ),2212, 3 );
GenParticlePtr p2 = std::make_shared<GenParticle>( FourVector( 0.750, -1.569, 32.191, 32.238), 1, 3 );
GenParticlePtr p3 = std::make_shared<GenParticle>( FourVector( 0.0, 0.0, -7000.0, 7000.0 ),2212, 3 );
GenParticlePtr p4 = std::make_shared<GenParticle>( FourVector(-3.047,-19.0, -54.629, 57.920), -2, 3 );
GenVertexPtr v1 = std::make_shared<GenVertex>();
v1->add_particle_in (p1);
v1->add_particle_out(p2);
evt.add_vertex(v1);
v1->set_status(4);
GenVertexPtr v2 = std::make_shared<GenVertex>();
v2->add_particle_in (p3);
v2->add_particle_out(p4);
evt.add_vertex(v2);
GenVertexPtr v3 = std::make_shared<GenVertex>();
v3->add_particle_in(p2);
v3->add_particle_in(p4);
evt.add_vertex(v3);
GenParticlePtr p5 = std::make_shared<GenParticle>( FourVector(-3.813, 0.113, -1.833, 4.233), 22, 1 );
GenParticlePtr p6 = std::make_shared<GenParticle>( FourVector( 1.517,-20.68, -20.605,85.925), -24, 3 );
v3->add_particle_out(p5);
v3->add_particle_out(p6);
GenVertexPtr v4 =std:: make_shared<GenVertex>();
v4->add_particle_in (p6);
evt.add_vertex(v4);
GenParticlePtr p7 = std::make_shared<GenParticle>( FourVector(-2.445, 28.816, 6.082,29.552), 1, 1 );
GenParticlePtr p8 = std::make_shared<GenParticle>( FourVector( 3.962,-49.498,-26.687,56.373), -2, 1 );
v4->add_particle_out(p7);
v4->add_particle_out(p8);
std::shared_ptr<GenPdfInfo> pdf_info = std::make_shared<GenPdfInfo>();
evt.add_attribute("GenPdfInfo",pdf_info);
pdf_info->set(1,2,3.4,5.6,7.8,9.0,1.2,3,4);
std::shared_ptr<GenHeavyIon> heavy_ion = std::make_shared<GenHeavyIon>();
evt.add_attribute("GenHeavyIon",heavy_ion);
heavy_ion->set( 1,2,3,4,5,6,7,8,9,0.1,2.3,4.5,6.7);
std::shared_ptr<GenCrossSection> cross_section = std::make_shared<GenCrossSection>();
evt.add_attribute("GenCrossSection",cross_section);
cross_section->set_cross_section(1.2,3.4);
std::cout << std::endl << " Manipulating attributes:" << std::endl;
std::shared_ptr<GenCrossSection> cs = evt.attribute<GenCrossSection>("GenCrossSection");
if(cs) {
cs->set_cross_section(-1.0,0.0);
Print::line(cs);
}
else std::cout << "Problem accessing attribute!" <<std::endl;
evt.remove_attribute("GenCrossSection");
evt.remove_attribute("GenCrossSection");
cs = evt.attribute<GenCrossSection>("GenCrossSection");
if(!cs)std::cout << "Successfully removed attribute" <<std::endl;
else std::cout << "Problem removing attribute!" <<std::endl;
std::shared_ptr<Attribute> tool1 = std::make_shared<IntAttribute>(1);
std::shared_ptr<Attribute> tool999 = std::make_shared<IntAttribute>(999);
std::shared_ptr<Attribute> test_attribute = std::make_shared<StringAttribute>("test attribute");
std::shared_ptr<Attribute> test_attribute2 = std::make_shared<StringAttribute>("test attribute2");
p2->add_attribute( "tool" , tool1 );
p2->add_attribute( "other" , test_attribute );
p4->add_attribute( "tool" , tool1 );
p6->add_attribute( "tool" , tool999 );
p6->add_attribute( "other" , test_attribute2 );
v3->add_attribute( "vtx_att" , test_attribute );
v4->add_attribute( "vtx_att" , test_attribute2 );
for(ConstGenParticlePtr p: applyFilter(Selector::ATTRIBUTE("tool"), evt.particles())){
Print::line(p);
}
std::cout <<std::endl << "Find all particles with attribute 'tool' equal 1 "<< std::endl;
std::cout << "(should return particles 2,4):" <<std::endl;
for(ConstGenParticlePtr p: applyFilter(Selector::ATTRIBUTE("tool") && Selector::ATTRIBUTE("tool") == tool1, evt.particles())){
Print::line(p);
}
std::cout << std::endl << "Find all particles with a string attribute 'other' equal 'test attribute' "<< std::endl;
std::cout << "(should return particle 2):" << std::endl;
for(ConstGenParticlePtr p: applyFilter(Selector::ATTRIBUTE("other") && Selector::ATTRIBUTE("other") == "test_attribute", evt.particles())){
Print::line(p);
}
*/
std::cout << std::endl << "Offsetting event position by 5,5,5,5" << std::endl;
evt.shift_position_by( FourVector(5,5,5,5) );
Print::listing(evt);
std::cout << std::endl << "Printing full content of the GenEvent object " << std::endl
<< "(including particles and vertices in one-line format):" << std::endl << std::endl;
Print::content(evt);
std::cout <<std::endl << "Now: removing particle with id 6 and printing again:" <<std::endl <<std::endl;
evt.remove_particle(p6);
Print::listing(evt);
Print::content(evt);
std::cout <<std::endl << "Now: removing beam particles, leaving an empty event" <<std::endl <<std::endl;
evt.remove_particles( evt.beams() );
Print::listing(evt);
Print::content(evt);
return 0;
}
Definition of class GenEvent.
Definition of class GenParticle.
Definition of class GenVertex.
Definition of static class Print.
Defines helper classes to extract relatives of an input GenParticle or GenVertex.
definition of /b Selector class
int main(int argc, char **argv)