00102 {
00103
00104 EvtSpinType::spintype thisSpin=EvtPDL::getSpinType(id);
00105
00106 if ( thisSpin == EvtSpinType::SCALAR ) {
00107 EvtScalarParticle *myPart;
00108 myPart=new EvtScalarParticle;
00109 myPart->init(id, p4);
00110 myPart->setSpinDensityForward(rho);
00111 return myPart;
00112 }
00113
00114 if ( thisSpin == EvtSpinType::VECTOR ) {
00115 EvtVectorParticle *myPart;
00116 myPart=new EvtVectorParticle;
00117 myPart->init(id, p4);
00118 myPart->setSpinDensityForward(rho);
00119 return myPart;
00120 }
00121 if ( thisSpin == EvtSpinType::DIRAC ) {
00122 EvtDiracParticle *myPart;
00123 myPart=new EvtDiracParticle;
00124 myPart->init(id, p4);
00125 myPart->setSpinDensityForward(rho);
00126 return myPart;
00127 }
00128 if ( thisSpin == EvtSpinType::NEUTRINO ) {
00129 EvtNeutrinoParticle *myPart;
00130 myPart=new EvtNeutrinoParticle;
00131 myPart->init(id, p4);
00132 myPart->setSpinDensityForward(rho);
00133 return myPart;
00134 }
00135 if ( thisSpin == EvtSpinType::PHOTON ) {
00136 EvtPhotonParticle *myPart;
00137 myPart=new EvtPhotonParticle;
00138 myPart->init(id, p4);
00139 myPart->setSpinDensityForward(rho);
00140 return myPart;
00141 }
00142 if ( thisSpin == EvtSpinType::TENSOR ) {
00143 EvtTensorParticle *myPart;
00144 myPart=new EvtTensorParticle;
00145 myPart->init(id, p4);
00146 myPart->setSpinDensityForward(rho);
00147 return myPart;
00148 }
00149 if ( thisSpin == EvtSpinType::STRING ) {
00150 EvtStringParticle *myPart;
00151 myPart=new EvtStringParticle;
00152 myPart->init(id, p4);
00153 myPart->setSpinDensityForward(rho);
00154 return myPart;
00155 }
00156 if ( thisSpin == EvtSpinType::SPIN3 ) {
00157 EvtHighSpinParticle *myPart;
00158 myPart=new EvtHighSpinParticle;
00159 myPart->init(id, p4);
00160 myPart->setSpinDensityForward(rho);
00161 return myPart;
00162 }
00163 if ( thisSpin == EvtSpinType::SPIN5HALF ) {
00164 EvtHighSpinParticle *myPart;
00165 myPart=new EvtHighSpinParticle;
00166 myPart->init(id, p4);
00167 myPart->setSpinDensityForward(rho);
00168 return myPart;
00169 }
00170 if ( thisSpin == EvtSpinType::SPIN7HALF ) {
00171 EvtHighSpinParticle *myPart;
00172 myPart=new EvtHighSpinParticle;
00173 myPart->init(id, p4);
00174 myPart->setSpinDensityForward(rho);
00175 return myPart;
00176 }
00177 if ( thisSpin == EvtSpinType::RARITASCHWINGER ) {
00178 EvtRaritaSchwingerParticle *myPart;
00179 myPart=new EvtRaritaSchwingerParticle;
00180 myPart->init(id, p4);
00181 myPart->setSpinDensityForward(rho);
00182 return myPart;
00183 }
00184 if ( thisSpin == EvtSpinType::SPIN4 ) {
00185 EvtHighSpinParticle *myPart;
00186 myPart=new EvtHighSpinParticle;
00187 myPart->init(id, p4);
00188 myPart->setSpinDensityForward(rho);
00189 return myPart;
00190 }
00191
00192 report(ERROR,"EvtGen")<<"Error in EvtParticleFactory::particleFactory"<<endl;
00193 report(ERROR,"EvtGen")<<"Tried to create non-existing particle"
00194 <<" with spin type:"<<thisSpin
00195 <<" and name:"<<EvtPDL::name(id).c_str()<<endl;
00196 report(ERROR,"EvtGen")<<"Will terminate execution"<<endl;
00197
00198
00199
00200 ::abort();
00201
00202 return 0;
00203
00204 }