HepPDT Reference Documentation

HepPDT

examListIsajet.cc

00001 // -------------------------------------------------------------------
00002 // examListIsajet.cc
00003 // 
00004 // ----------------------------------------------------------------------
00013  
00014 #include <fstream>
00015 #include <iostream>
00016 #include <cstdlib>
00017 #include <cstring>
00018 
00019 #include "HepPID/ParticleIDTranslations.hh"
00020 #include "HepPID/ParticleName.hh"
00021 #include "HepPID/Version.hh"
00022 
00023 extern "C" {
00024     void list_isajet_init_ ( );
00025     void flavor_( int *, int *, int *, int *, int *, int * );
00026     void get_label_( int * id, char *name );
00027 }
00028 
00029 int main()
00030 {
00031     static char outfile[] = "examListIsajet.out";
00032     std::string title = "HepPID listing of Isajet translations";
00033 
00034     // initialize isajet 
00035     list_isajet_init_ ( );
00036 
00037     // open the output stream
00038     std::ofstream os( outfile );
00039     if( !os ) {
00040         std::cout << "error opening output file"  << std::endl;
00041         exit(1);
00042     }
00043     HepPID::writeVersion(os);
00044 
00045     os << "      " << title << std::endl;
00046     
00047     int i, j;
00048     int id, aid, fl1, fl2, fl3, js, indx;
00049     int pid;
00050     char cname[10];
00051     char acname[10];
00052     std::string hname;
00053     std::string pn;
00054     for( i=1; i<100005; ++i ) {
00055         // make sure names are empty
00056         for( j=0; j<10; ++j) { cname[j] = '\0'; }
00057         for( j=0; j<10; ++j) { acname[j] = '\0'; }
00058         // get info from isajet
00059         id = i;
00060         aid = 0;
00061         flavor_(&id, &fl1, &fl2, &fl3, &js, &indx );
00062         // we need both a valid index and a valid label
00063         // check the label only if there is a valid translation
00064         if ( indx > 0 ) {
00065            get_label_(&id,cname);
00066            aid = -id;
00067            get_label_(&aid,acname);
00068         } else {
00069            id = aid = 0;
00070         }
00071         
00072         // print particle
00073         if( id != 0 ) {
00074             pid = HepPID::translateIsajettoPDT( id );
00075             hname = std::string( cname );
00076             if ( pid != 0 ) {
00077                 pn = HepPID::particleName( pid );
00078                 os << "Isajet: ";
00079                 os.width(10);
00080                 os << id << " " << hname;
00081                 os << "  HepPID: " ;
00082                 os.width(12);
00083                 os << pid << " " << pn << std::endl;
00084             } else if ( strncmp( cname, "ERR", 3 ) != 0 ) {
00085                 os << "Isajet: ";
00086                 os.width(10);
00087                 os << id << " with name \"" << hname;
00088                 os << "\" has no HepPID translation " << std::endl;
00089             }
00090         }
00091         // print antiparticle
00092         if( aid != 0 ) {
00093             hname = std::string( acname );
00094             pid = HepPID::translateIsajettoPDT( aid );
00095             if ( pid != 0 ) {
00096                 pn = HepPID::particleName( pid );
00097                 os << "Isajet: ";
00098                 os.width(10);
00099                 os << aid << " " << hname;
00100                 os << "  HepPID: " ;
00101                 os.width(12);
00102                 os << pid << " " << pn << std::endl;
00103             } else if ( strncmp( acname, "ERR", 3 ) != 0 ) {
00104                 os << "Isajet: ";
00105                 os.width(10);
00106                 os << aid << " with name \"" << hname;
00107                 os << "\" has no HepPID translation " << std::endl;
00108             }
00109         }
00110     }
00111     
00112     return 0;
00113 }

Generated on Fri Dec 4 14:05:23 2009 for HepPDT by  doxygen 1.4.7