/////////////////////////////////////////////////////////////////////////////// // fill START branches of GEANT ROOT tree // // last modified on: 11/02/2014 by I. Koenig /////////////////////////////////////////////////////////////////////////////// #include "fillstart.h" #include "cfortran.h" #include "hgeantstart.h" #include "hgeantmaxtrk.h" #include "hades.h" #include "hlocation.h" #include "hcategory.h" #include "hrecevent.h" #include "hpartialevent.h" #include "hgeantkine.h" struct START_DEF { // structure mapped to STARTTUPLE Fortran COMMON block Int_t ntrk; Int_t starttrk[MAXTRKSTART]; Int_t startdet[MAXTRKSTART]; Float_t starte[MAXTRKSTART]; Float_t startx[MAXTRKSTART]; Float_t starty[MAXTRKSTART]; Float_t starttof[MAXTRKSTART]; Float_t startmom[MAXTRKSTART]; Float_t startlen[MAXTRKSTART]; }; #define STARTTUPLE COMMON_BLOCK(STARTTUPLE,starttuple) COMMON_BLOCK_DEF(START_DEF,STARTTUPLE); void fillstart(void) { HLocation loc; loc.set(0); HRecEvent* pHGeantEvent = (HRecEvent*)(gHades->getCurrentEvent()); // get pointer to event HPartialEvent* pSimul = pHGeantEvent->getPartialEvent(catSimul); HCategory* pStartCat = pSimul->getCategory(catStartGeantRaw); // get category pStartCat->Clear(); // clear category HCategory* pKin = pSimul->getCategory(catGeantKine); // get KINE cat for(int trk=0; trkgetNewSlot(loc); // get slot if(pStart==NULL) { printf("\n*** FILLSTART: HGeantStart location not found ! ***\n"); printf("cell=%d trk=%d\n",cell,trk); return; } pStart = new(pStart) HGeantStart; // START track data Int_t track = STARTTUPLE.starttrk[trk]; pStart->setTrack(track); pStart->setHit(STARTTUPLE.starte[trk],STARTTUPLE.startx[trk],STARTTUPLE.starty[trk], STARTTUPLE.starttof[trk],STARTTUPLE.startmom[trk],STARTTUPLE.startlen[trk]); pStart->setCell((Char_t)cell); if(pKin != NULL && track > 0) { // add hit to linked list of track ((HGeantKine*)pKin->getObject(track-1))->setStartHitIndex(trk); pStart->sortVariable = STARTTUPLE.starttof[trk]; } } } // wrapping of the c++ routine as Fortran-subroutine using cfortran.h of Cern-library FCALLSCSUB0(fillstart,FILLSTART,fillstart)