LCOV - code coverage report
Current view: top level - EVGEN - AliGenReaderEMD.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 351 0.3 %
Date: 2016-06-14 17:26:59 Functions: 1 14 7.1 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       3             :  *                                                                        *
       4             :  * Author: The ALICE Off-line Project.                                    *
       5             :  * Contributors are mentioned in the code where appropriate.              *
       6             :  *                                                                        *
       7             :  * Permission to use, copy, modify and distribute this software and its   *
       8             :  * documentation strictly for non-commercial purposes is hereby granted   *
       9             :  * without fee, provided that the above copyright notice appears in all   *
      10             :  * copies and that both the copyright notice and this permission notice   *
      11             :  * appear in the supporting documentation. The authors make no claims     *
      12             :  * about the suitability of this software for any purpose. It is          *
      13             :  * provided "as is" without express or implied warranty.                  *
      14             :  **************************************************************************/
      15             : 
      16             : 
      17             : // Class to read events from external (TNtupla) file
      18             : // Events -> neutron removal by EM dissociation of Pb nuclei
      19             : // Data from RELDIS code (by I. Pshenichov)
      20             : 
      21             : #include <TFile.h>
      22             : #include <TParticle.h>
      23             : #include <TTree.h>
      24             : #include <TVirtualMC.h>
      25             : #include <TDatabasePDG.h>
      26             : #include <TPDGCode.h>
      27             : #include "AliGenReaderEMD.h"
      28             : #include "AliStack.h"
      29             : 
      30             : 
      31           6 : ClassImp(AliGenReaderEMD)
      32             : 
      33           0 : AliGenReaderEMD::AliGenReaderEMD():
      34           0 :     fStartEvent(0),
      35           0 :     fNcurrent(0),  
      36           0 :     fNparticle(0), 
      37           0 :     fTreeNtuple(0),
      38           0 :     fPcToTrack(0),
      39           0 :     fOffset(0),
      40           0 :     fNnAside(0),
      41           0 :     fEnAside(0),
      42           0 :     fnPDGCode(0),
      43           0 :     fNnCside(0),
      44           0 :     fEnCside(0),
      45           0 :     fNpAside(0),
      46           0 :     fEtapAside(0),
      47           0 :     fpPDGCode(0),
      48           0 :     fNpCside(0),
      49           0 :     fEtapCside(0),
      50           0 :     fNppAside(0),
      51           0 :     fEtappAside(0),
      52           0 :     fppPDGCode(0),
      53           0 :     fNppCside(0),
      54           0 :     fEtappCside(0),
      55           0 :     fNpmAside(0),
      56           0 :     fEtapmAside(0),
      57           0 :     fpmPDGCode(0),
      58           0 :     fNpmCside(0),
      59           0 :     fEtapmCside(0),
      60           0 :     fNp0Aside(0),
      61           0 :     fEtap0Aside(0),
      62           0 :     fp0PDGCode(0),
      63           0 :     fNp0Cside(0),
      64           0 :     fEtap0Cside(0),
      65           0 :     fNetaAside(0),
      66           0 :     fEtaetaAside(0),
      67           0 :     fetaPDGCode(0),
      68           0 :     fNetaCside(0),
      69           0 :     fEtaetaCside(0),
      70           0 :     fNomegaAside(0),
      71           0 :     fEtaomegaAside(0),
      72           0 :     fomegaPDGCode(0),
      73           0 :     fNomegaCside(0),
      74           0 :     fEtaomegaCside(0)
      75           0 : {
      76             : // Std constructor
      77           0 :     for(int i=0; i<70; i++){
      78           0 :        fPxnAside[i] = fPynAside[i] = fPznAside[i] = 0.;
      79           0 :        fPxnCside[i] = fPynCside[i] = fPznCside[i] = 0.;
      80           0 :        if(i<50){
      81           0 :          fPxpAside[i] = fPypAside[i] = fPzpAside[i] = 0.;
      82           0 :          fPxpCside[i] = fPypCside[i] = fPzpCside[i] = 0.;
      83           0 :          if(i<30){
      84           0 :            fPxppAside[i] = fPyppAside[i] = fPzppAside[i] = 0.;
      85           0 :            fPxppCside[i] = fPyppCside[i] = fPzppCside[i] = 0.;
      86           0 :            fPxpmAside[i] = fPypmAside[i] = fPzpmAside[i] = 0.;
      87           0 :            fPxpmCside[i] = fPypmCside[i] = fPzpmCside[i] = 0.;
      88           0 :            fPxp0Aside[i] = fPyp0Aside[i] = fPzp0Aside[i] = 0.;
      89           0 :            fPxp0Cside[i] = fPyp0Cside[i] = fPzp0Cside[i] = 0.;
      90           0 :            if(i<15){
      91           0 :              fPxetaAside[i] = fPyetaAside[i] = fPzetaAside[i] = 0.;
      92           0 :              fPxetaCside[i] = fPyetaCside[i] = fPzetaCside[i] = 0.;
      93           0 :              fPxomegaAside[i] = fPyomegaAside[i] = fPzomegaAside[i] = 0.;
      94           0 :              fPxomegaCside[i] = fPyomegaCside[i] = fPzomegaCside[i] = 0.;
      95           0 :            }
      96             :          }
      97             :        }        
      98             :     }
      99           0 :     if(fPcToTrack==kAll) printf("\n\t   *** AliGenReaderEMD will track all produced particles \n\n");
     100           0 :     else if(fPcToTrack==kNotNucleons) printf("\n\t   *** AliGenReaderEMD will track all produced particles except nucleons\n\n");
     101           0 :     else if(fPcToTrack==kOnlyNucleons) printf("\n\t   *** AliGenReaderEMD will track only nucleons\n\n");
     102           0 : }
     103             : 
     104             : 
     105             : AliGenReaderEMD::AliGenReaderEMD(const AliGenReaderEMD &reader):
     106           0 :     AliGenReader(reader),
     107           0 :     fStartEvent(0),
     108           0 :     fNcurrent(0),  
     109           0 :     fNparticle(0), 
     110           0 :     fTreeNtuple(0),
     111           0 :     fPcToTrack(0),
     112           0 :     fOffset(0),
     113           0 :     fNnAside(0),
     114           0 :     fEnAside(0),
     115           0 :     fnPDGCode(0),
     116           0 :     fNnCside(0),
     117           0 :     fEnCside(0),
     118           0 :     fNpAside(0),
     119           0 :     fEtapAside(0),
     120           0 :     fpPDGCode(0),
     121           0 :     fNpCside(0),
     122           0 :     fEtapCside(0),
     123           0 :     fNppAside(0),
     124           0 :     fEtappAside(0),
     125           0 :     fppPDGCode(0),
     126           0 :     fNppCside(0),
     127           0 :     fEtappCside(0),
     128           0 :     fNpmAside(0),
     129           0 :     fEtapmAside(0),
     130           0 :     fpmPDGCode(0),
     131           0 :     fNpmCside(0),
     132           0 :     fEtapmCside(0),
     133           0 :     fNp0Aside(0),
     134           0 :     fEtap0Aside(0),
     135           0 :     fp0PDGCode(0),
     136           0 :     fNp0Cside(0),
     137           0 :     fEtap0Cside(0),
     138           0 :     fNetaAside(0),
     139           0 :     fEtaetaAside(0),
     140           0 :     fetaPDGCode(0),
     141           0 :     fNetaCside(0),
     142           0 :     fEtaetaCside(0),
     143           0 :     fNomegaAside(0),
     144           0 :     fEtaomegaAside(0),
     145           0 :     fomegaPDGCode(0),
     146           0 :     fNomegaCside(0),
     147           0 :     fEtaomegaCside(0)
     148           0 : {
     149             :     // Copy Constructor
     150           0 :     for(int i=0; i<70; i++){
     151           0 :        fPxnAside[i] = fPynAside[i] = fPznAside[i] = 0.;
     152           0 :        fPxnCside[i] = fPynCside[i] = fPznCside[i] = 0.;
     153           0 :        if(i<50){
     154           0 :          fPxpAside[i] = fPypAside[i] = fPzpAside[i] = 0.;
     155           0 :          fPxpCside[i] = fPypCside[i] = fPzpCside[i] = 0.;
     156           0 :          if(i<30){
     157           0 :            fPxppAside[i] = fPyppAside[i] = fPzppAside[i] = 0.;
     158           0 :            fPxppCside[i] = fPyppCside[i] = fPzppCside[i] = 0.;
     159           0 :            fPxpmAside[i] = fPypmAside[i] = fPzpmAside[i] = 0.;
     160           0 :            fPxpmCside[i] = fPypmCside[i] = fPzpmCside[i] = 0.;
     161           0 :            fPxp0Aside[i] = fPyp0Aside[i] = fPzp0Aside[i] = 0.;
     162           0 :            fPxp0Cside[i] = fPyp0Cside[i] = fPzp0Cside[i] = 0.;
     163           0 :            if(i<15){
     164           0 :              fPxetaAside[i] = fPyetaAside[i] = fPzetaAside[i] = 0.;
     165           0 :              fPxetaCside[i] = fPyetaCside[i] = fPzetaCside[i] = 0.;
     166           0 :              fPxomegaAside[i] = fPyomegaAside[i] = fPzomegaAside[i] = 0.;
     167           0 :              fPxomegaCside[i] = fPyomegaCside[i] = fPzomegaCside[i] = 0.;
     168           0 :            }
     169             :          }
     170             :        }        
     171             :     }
     172           0 :     reader.Copy(*this);
     173           0 : }
     174             :   // -----------------------------------------------------------------------------------
     175             : AliGenReaderEMD::~AliGenReaderEMD()
     176           0 : {
     177           0 :     delete fTreeNtuple;
     178           0 : }
     179             : 
     180             : // -----------------------------------------------------------------------------------
     181             : AliGenReaderEMD& AliGenReaderEMD::operator=(const  AliGenReaderEMD& rhs)
     182             : {
     183             : // Assignment operator
     184           0 :     rhs.Copy(*this);
     185           0 :     return *this;
     186             : }
     187             : 
     188             : // -----------------------------------------------------------------------------------
     189             : void AliGenReaderEMD::Copy(TObject&) const
     190             : {
     191             :     //
     192             :     // Copy 
     193             :     //
     194           0 :     Fatal("Copy","Not implemented!\n");
     195           0 : }
     196             : 
     197             : // -----------------------------------------------------------------------------------
     198             : void AliGenReaderEMD::Init() 
     199             : {
     200             : //
     201             : // Reset the existing file environment and open a new root file
     202             :     
     203             :     TFile *pFile=0;
     204           0 :     if (!pFile) {
     205           0 :         pFile = new TFile(fFileName);
     206           0 :         pFile->cd();
     207           0 :         printf("\n %s file opened to read RELDIS EMD events\n\n", fFileName);
     208           0 :     }
     209           0 :     fTreeNtuple = (TTree*)gDirectory->Get("h2032");
     210           0 :     fNcurrent = fStartEvent;
     211             : 
     212           0 :     TTree *Ntu=fTreeNtuple;
     213             :     //
     214             :     // Set branch addresses
     215             :     // **** neutrons
     216           0 :     Ntu->SetBranchAddress("Nleft",&fNnAside);
     217           0 :     Ntu->SetBranchAddress("Eleft",&fEnAside);
     218           0 :     Ntu->SetBranchAddress("Ipdg_l_n",&fnPDGCode);
     219           0 :     Ntu->SetBranchAddress("Pxl",  fPxnAside);
     220           0 :     Ntu->SetBranchAddress("Pyl",  fPynAside);
     221           0 :     Ntu->SetBranchAddress("Pzl",  fPznAside);
     222           0 :     Ntu->SetBranchAddress("Nright",&fNnCside);
     223           0 :     Ntu->SetBranchAddress("Eright",&fEnCside);
     224           0 :     Ntu->SetBranchAddress("Pxr",   fPxnCside);
     225           0 :     Ntu->SetBranchAddress("Pyr",   fPynCside);
     226           0 :     Ntu->SetBranchAddress("Pzr",   fPznCside);
     227             :     // **** protons
     228           0 :     Ntu->SetBranchAddress("Nleft_p",&fNpAside);
     229           0 :     Ntu->SetBranchAddress("Etaleft_p",&fEtapAside);
     230           0 :     Ntu->SetBranchAddress("Ipdg_l_p",&fpPDGCode);
     231           0 :     Ntu->SetBranchAddress("Pxl_p",  fPxpAside);
     232           0 :     Ntu->SetBranchAddress("Pyl_p",  fPypAside);
     233           0 :     Ntu->SetBranchAddress("Pzl_p",  fPzpAside);
     234           0 :     Ntu->SetBranchAddress("Nright_p",&fNpCside);
     235           0 :     Ntu->SetBranchAddress("Etaright_p",&fEtapCside);
     236           0 :     Ntu->SetBranchAddress("Pxr_p",   fPxpCside);
     237           0 :     Ntu->SetBranchAddress("Pyr_p",   fPypCside);
     238           0 :     Ntu->SetBranchAddress("Pzr_p",   fPzpCside);
     239             :     // **** pi+
     240           0 :     Ntu->SetBranchAddress("Nleft_pp",&fNppAside);
     241           0 :     Ntu->SetBranchAddress("Etaleft_pp",&fEtappAside);
     242           0 :     Ntu->SetBranchAddress("Ipdg_l_pp",&fppPDGCode);
     243           0 :     Ntu->SetBranchAddress("Pxl_pp",  fPxppAside);
     244           0 :     Ntu->SetBranchAddress("Pyl_pp",  fPyppAside);
     245           0 :     Ntu->SetBranchAddress("Pzl_pp",  fPzppAside);
     246           0 :     Ntu->SetBranchAddress("Nright_pp",&fNppCside);
     247           0 :     Ntu->SetBranchAddress("Etaright_pp",&fEtappCside);
     248           0 :     Ntu->SetBranchAddress("Pxr_pp",   fPxppCside);
     249           0 :     Ntu->SetBranchAddress("Pyr_pp",   fPyppCside);
     250           0 :     Ntu->SetBranchAddress("Pzr_pp",   fPzppCside);
     251             :     // **** pi-
     252           0 :     Ntu->SetBranchAddress("Nleft_pm",&fNpmAside);
     253           0 :     Ntu->SetBranchAddress("Etaleft_pm",&fEtapmAside);
     254           0 :     Ntu->SetBranchAddress("Ipdg_l_pm",&fpmPDGCode);
     255           0 :     Ntu->SetBranchAddress("Pxl_pm",  fPxpmAside);
     256           0 :     Ntu->SetBranchAddress("Pyl_pm",  fPypmAside);
     257           0 :     Ntu->SetBranchAddress("Pzl_pm",  fPzpmAside);
     258           0 :     Ntu->SetBranchAddress("Nright_pm",&fNpmCside);
     259           0 :     Ntu->SetBranchAddress("Etaright_pm",&fEtapmCside);
     260           0 :     Ntu->SetBranchAddress("Pxr_pm",   fPxpmCside);
     261           0 :     Ntu->SetBranchAddress("Pyr_pm",   fPypmCside);
     262           0 :     Ntu->SetBranchAddress("Pzr_pm",   fPzpmCside);
     263             :     // **** pi0
     264           0 :     Ntu->SetBranchAddress("Nleft_p0",&fNp0Aside);
     265           0 :     Ntu->SetBranchAddress("Etaleft_p0",&fEtap0Aside);
     266           0 :     Ntu->SetBranchAddress("Ipdg_l_p0",&fp0PDGCode);
     267           0 :     Ntu->SetBranchAddress("Pxl_p0",  fPxp0Aside);
     268           0 :     Ntu->SetBranchAddress("Pyl_p0",  fPyp0Aside);
     269           0 :     Ntu->SetBranchAddress("Pzl_p0",  fPzp0Aside);
     270           0 :     Ntu->SetBranchAddress("Nright_p0",&fNp0Cside);
     271           0 :     Ntu->SetBranchAddress("Etaright_p0",&fEtap0Cside);
     272           0 :     Ntu->SetBranchAddress("Pxr_p0",   fPxp0Cside);
     273           0 :     Ntu->SetBranchAddress("Pyr_p0",   fPyp0Cside);
     274           0 :     Ntu->SetBranchAddress("Pzr_p0",   fPzp0Cside);
     275             :     // **** eta
     276           0 :     Ntu->SetBranchAddress("Nleft_et",&fNetaAside);
     277           0 :     Ntu->SetBranchAddress("Etaleft_et",&fEtaetaAside);
     278           0 :     Ntu->SetBranchAddress("Ipdg_l_et",&fetaPDGCode);
     279           0 :     Ntu->SetBranchAddress("Pxl_et",  fPxetaAside);
     280           0 :     Ntu->SetBranchAddress("Pyl_et",  fPyetaAside);
     281           0 :     Ntu->SetBranchAddress("Pzl_et",  fPzetaAside);
     282           0 :     Ntu->SetBranchAddress("Nright_et",&fNetaCside);
     283           0 :     Ntu->SetBranchAddress("Etaright_et",&fEtaetaCside);
     284           0 :     Ntu->SetBranchAddress("Pxr_et",   fPxetaCside);
     285           0 :     Ntu->SetBranchAddress("Pyr_et",   fPyetaCside);
     286           0 :     Ntu->SetBranchAddress("Pzr_et",   fPzetaCside);
     287             :     // **** omega
     288           0 :     Ntu->SetBranchAddress("Nleft_om",&fNomegaAside);
     289           0 :     Ntu->SetBranchAddress("Etaleft_om",&fEtaomegaAside);
     290           0 :     Ntu->SetBranchAddress("Ipdg_l_om",&fomegaPDGCode);
     291           0 :     Ntu->SetBranchAddress("Pxl_om",  fPxomegaAside);
     292           0 :     Ntu->SetBranchAddress("Pyl_om",  fPyomegaAside);
     293           0 :     Ntu->SetBranchAddress("Pzl_om",  fPzomegaAside);
     294           0 :     Ntu->SetBranchAddress("Nright_om",&fNomegaCside);
     295           0 :     Ntu->SetBranchAddress("Etaright_om",&fEtaomegaCside);
     296           0 :     Ntu->SetBranchAddress("Pxr_om",   fPxomegaCside);
     297           0 :     Ntu->SetBranchAddress("Pyr_om",   fPyomegaCside);
     298           0 :     Ntu->SetBranchAddress("Pzr_om",   fPzomegaCside);
     299           0 : }
     300             : 
     301             : // -----------------------------------------------------------------------------------
     302             : Int_t AliGenReaderEMD::NextEvent() 
     303             : {
     304             :     // Read the next event  
     305             :     Int_t nTracks=0;
     306           0 :     fNparticle = 0; fOffset=0;
     307             :     
     308           0 :     TFile* pFile = fTreeNtuple->GetCurrentFile();
     309           0 :     pFile->cd();
     310             :     
     311             : 
     312           0 :     Int_t nentries = (Int_t) fTreeNtuple->GetEntries();
     313           0 :     if(fNcurrent < nentries) {
     314           0 :         fTreeNtuple->GetEvent(fNcurrent);
     315           0 :         if(fNcurrent%100 == 0) printf("\n *** Reading event %d ***\n",fNcurrent);
     316             :         //
     317           0 :         if(fPcToTrack==kAll || fPcToTrack==kOnlyNucleons){ // nucleons
     318           0 :            nTracks = fNnCside+fNnAside+fNpCside+fNpAside;
     319           0 :         }
     320           0 :         if(fPcToTrack==kAll || fPcToTrack==kNotNucleons){ //pions,eta,omega
     321           0 :             nTracks += fNppCside+fNpmCside+fNppAside+fNpmAside+fNp0Aside+fNp0Cside+
     322           0 :                 fNetaAside+fNetaCside+fNomegaAside+fNomegaCside;
     323           0 :         }
     324           0 :         fNcurrent++;
     325           0 :         printf("\t #### Putting %d particles in the stack\n", nTracks);
     326             :         /*if(fPcToTrack==kAll || fPcToTrack==kOnlyNucleons) printf("\t\t  %d+%d neutrons, %d+%d protons\n", 
     327             :                 fNnAside,fNnCside, fNpAside,fNpCside);
     328             :         if(fPcToTrack==kAll || fPcToTrack==kNotNucleons) printf("\t %d+%d pi+, %d+%d pi-, %d+%d pi0, %d+%d eta, %d+%d omega\n",
     329             :                 fNppAside,fNppCside,fNpmAside,fNpmCside, 
     330             :                 fNp0Aside,fNp0Cside,fNetaAside,fNetaCside, fNomegaAside,fNomegaCside);*/
     331           0 :         return nTracks;
     332             :     }
     333             : 
     334           0 :     return 0;
     335           0 : }
     336             : 
     337             : // -----------------------------------------------------------------------------------
     338             : TParticle* AliGenReaderEMD::NextParticle() 
     339             : {
     340             :     // Read the next particle
     341             :     Float_t p[4]={0.,0.,0.,0.};
     342             :     int pdgCode=0;
     343             :     
     344           0 :     if(fPcToTrack==kAll || fPcToTrack==kOnlyNucleons){//***********************************************
     345           0 :       if(fNparticle<fNnAside){
     346           0 :         p[0] = fPxnAside[fNparticle];
     347           0 :         p[1] = fPynAside[fNparticle];
     348           0 :         p[2] = fPznAside[fNparticle];  
     349           0 :         pdgCode = fnPDGCode;
     350             : //    printf(" pc%d n sideA: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     351           0 :       }
     352           0 :       else if(fNparticle>=fNnAside && fNparticle<(fNnAside+fNnCside)){
     353           0 :         p[0] = fPxnCside[fNparticle];
     354           0 :         p[1] = fPynCside[fNparticle];
     355           0 :         p[2] = fPznCside[fNparticle];
     356           0 :         pdgCode = fnPDGCode;
     357             : //    printf(" pc%d n sideC: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     358           0 :       }
     359           0 :       else if(fNparticle>=fNnAside+fNnCside && fNparticle<(fNnAside+fNnCside+fNpAside)){
     360           0 :         p[0] = fPxpAside[fNparticle];
     361           0 :         p[1] = fPypAside[fNparticle];
     362           0 :         p[2] = fPzpAside[fNparticle];
     363           0 :         pdgCode = fpPDGCode;
     364             : //    printf(" pc%d p sideA: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     365           0 :       }
     366           0 :       else if(fNparticle>=fNnAside+fNnCside+fNpAside && fNparticle<(fNnAside+fNnCside+fNpCside+fNpAside)){
     367           0 :         p[0] = fPxpCside[fNparticle];
     368           0 :         p[1] = fPypCside[fNparticle];
     369           0 :         p[2] = fPzpCside[fNparticle];
     370           0 :         pdgCode = fpPDGCode;
     371             : //    printf(" pc%d p sideC: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     372           0 :       }
     373           0 :       fOffset = fNnAside+fNnCside+fNpCside+fNpAside;
     374           0 :     } //**********************************************************************************************
     375           0 :     if(fPcToTrack==kAll || fPcToTrack==kNotNucleons){
     376           0 :       if(fNparticle>=fOffset && fNparticle<fOffset+fNppAside){ // *** pi +
     377           0 :         p[0] = fPxppAside[fNparticle];
     378           0 :         p[1] = fPyppAside[fNparticle];
     379           0 :         p[2] = fPzppAside[fNparticle];  
     380           0 :         pdgCode = fppPDGCode;
     381             : //    printf(" pc%d pi+ sideA: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     382           0 :       }
     383           0 :       if(fNparticle>=fOffset+fNppAside && fNparticle<fOffset+fNppAside+fNppCside){
     384           0 :         p[0] = fPxppCside[fNparticle];
     385           0 :         p[1] = fPyppCside[fNparticle];
     386           0 :         p[2] = fPzppCside[fNparticle];
     387           0 :         pdgCode = fppPDGCode;
     388             : //    printf(" pc%d pi+ sideC: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     389           0 :       }
     390           0 :       if(fNparticle>=fOffset+fNppAside+fNppCside && fNparticle<fOffset+fNppAside+fNppCside+fNpmAside){ // *** pi -
     391           0 :         p[0] = fPxpmAside[fNparticle];
     392           0 :         p[1] = fPypmAside[fNparticle];
     393           0 :         p[2] = fPzpmAside[fNparticle];
     394           0 :         pdgCode = fpmPDGCode;
     395             : //    printf(" pc%d pi- sideA: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     396           0 :       }
     397           0 :       if(fNparticle>=fOffset+fNppAside+fNppCside+fNpmAside && fNparticle<fOffset+fNppAside+fNppCside+fNpmAside+fNpmCside){
     398           0 :         p[0] = fPxpmCside[fNparticle];
     399           0 :         p[1] = fPypmCside[fNparticle];
     400           0 :         p[2] = fPzpmCside[fNparticle];
     401           0 :         pdgCode = fpmPDGCode;
     402             : //    printf(" pc%d pi- sideC: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     403           0 :       }
     404           0 :       if(fNparticle>=fOffset+fNppAside+fNppCside+fNpmAside+fNpmCside && 
     405           0 :          fNparticle<fOffset+fNppAside+fNppCside+fNpmAside+fNpmCside+fNp0Aside){ // *** pi 0
     406           0 :         p[0] = fPxp0Aside[fNparticle];
     407           0 :         p[1] = fPyp0Aside[fNparticle];
     408           0 :         p[2] = fPzp0Aside[fNparticle];
     409           0 :         pdgCode = fp0PDGCode;
     410             : //    printf(" pc%d pi0 sideA: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     411           0 :       }
     412           0 :       if(fNparticle>=fOffset+fNppAside+fNppCside+fNpmAside+fNpmCside+fNp0Aside && 
     413           0 :         fNparticle<fOffset+fNppAside+fNppCside+fNpmAside+fNpmCside+fNp0Aside+fNp0Cside){
     414           0 :         p[0] = fPxp0Cside[fNparticle];
     415           0 :         p[1] = fPyp0Cside[fNparticle];
     416           0 :         p[2] = fPzp0Cside[fNparticle];
     417           0 :         pdgCode = fp0PDGCode;
     418             : //    printf(" pc%d pi0 sideC: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     419           0 :       }
     420           0 :       if(fNparticle>=fOffset+fNppAside+fNppCside+fNpmAside+fNpmCside+fNp0Aside+fNp0Cside && 
     421           0 :          fNparticle<fOffset+fNppAside+fNppCside+fNpmAside+fNpmCside+fNp0Aside+fNp0Cside+fNetaAside){ // *** eta
     422           0 :         p[0] = fPxetaAside[fNparticle];
     423           0 :         p[1] = fPyetaAside[fNparticle];
     424           0 :         p[2] = fPzetaAside[fNparticle];
     425           0 :         pdgCode = fetaPDGCode;
     426             : //    printf(" pc%d eta sideA: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     427           0 :       }
     428           0 :       if(fNparticle>=fOffset+fNppAside+fNppCside+fNpmAside+fNpmCside+fNp0Aside+fNp0Cside+fNetaAside && 
     429           0 :          fNparticle<fOffset+fNppAside+fNppCside+fNpmAside+fNpmCside+fNp0Aside+fNp0Cside+fNetaAside+fNetaCside){
     430           0 :         p[0] = fPxetaCside[fNparticle];
     431           0 :         p[1] = fPyetaCside[fNparticle];
     432           0 :         p[2] = fPzetaCside[fNparticle];
     433           0 :         pdgCode = fetaPDGCode;
     434             : //    printf(" pc%d eta sideC: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     435           0 :       }
     436           0 :       if(fNparticle>=fOffset+fNppAside+fNppCside+fNpmAside+fNpmCside+fNp0Aside+fNp0Cside+fNetaAside+fNetaCside && 
     437           0 :          fNparticle<fOffset+fNppAside+fNppCside+fNpmAside+fNpmCside+fNp0Aside+fNp0Cside+fNetaAside+fNetaCside+fNomegaAside){ // *** omega
     438           0 :         p[0] = fPxomegaAside[fNparticle];
     439           0 :         p[1] = fPyomegaAside[fNparticle];
     440           0 :         p[2] = fPzomegaAside[fNparticle];
     441           0 :         pdgCode = fomegaPDGCode;
     442             : //    printf(" pc%d omega sideA: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     443           0 :       }
     444           0 :       if(fNparticle>=fOffset+fNppAside+fNppCside+fNpmAside+fNpmCside+fNp0Aside+fNp0Cside+fNetaAside+fNetaCside+fNomegaAside
     445           0 :       && fNparticle<fOffset+fNppAside+fNppCside+fNpmAside+fNpmCside+fNp0Aside+fNp0Cside+fNetaAside+fNetaCside+fNomegaAside+fNomegaCside){
     446           0 :         p[0] = fPxomegaCside[fNparticle];
     447           0 :         p[1] = fPyomegaCside[fNparticle];
     448           0 :         p[2] = fPzomegaCside[fNparticle];
     449           0 :         pdgCode = fomegaPDGCode;
     450             : //    printf(" pc%d omega sideC: PDG code %d,  momentum (%f, %f, %f) \n", fNparticle, pdgCode, p[0],p[1],p[2]);
     451           0 :       }
     452             :       
     453             :     } 
     454             :    
     455           0 :     Float_t ptot = TMath::Sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2]);
     456           0 :     Double_t amass = TDatabasePDG::Instance()->GetParticle(pdgCode)->Mass();
     457           0 :     p[3] = TMath::Sqrt(ptot*ptot+amass*amass);
     458             :     
     459           0 :     if(p[3]<=amass){ 
     460           0 :        Warning("Generate","Particle %d  E = %f GeV mass = %f GeV ",pdgCode,p[3],amass);
     461           0 :     }
     462             :     
     463             :     //printf("  Pc %d:  PDGcode %d  p(%1.2f, %1.2f, %1.2f, %1.3f)\n",
     464             :     //  fNparticle,pdgCode,p[0], p[1], p[2], p[3]);
     465             :     
     466           0 :     TParticle* particle = new TParticle(pdgCode, 0, -1, -1, -1, -1, 
     467           0 :         p[0], p[1], p[2], p[3], 0., 0., 0., 0.);
     468           0 :     if((p[0]*p[0]+p[1]*p[1]+p[2]*p[2])>1e-5) particle->SetBit(kTransportBit);
     469           0 :     fNparticle++;
     470           0 :     return particle;
     471           0 : }
     472             : 
     473             : //___________________________________________________________
     474             : void AliGenReaderEMD::RewindEvent()
     475             : {
     476             :   // Go back to the first particle of the event
     477           0 :   fNparticle = 0;
     478           0 : }

Generated by: LCOV version 1.11