]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TMEVSIM/TMevSim.cxx
Trigger descriptor for MUON standalone (Ch.Finck)
[u/mrichter/AliRoot.git] / TMEVSIM / TMevSim.cxx
index a143c7754b4c322e49e436e8b36a02ae2d3daa30..9c9d807f5fa9ead79bebafe9044926902618f900 100644 (file)
@@ -617,6 +617,49 @@ Int_t TMevSim::ImportParticles(TClonesArray *particles, Option_t */*option*/)
    return totpart;
 }
 //______________________________________________________________________________
+TObjArray * TMevSim::ImportParticles(Option_t */*option*/)
+{
+// Read in particles created by MevSim into the TClonesArray(). The Initialize()
+// and GenrateEvent() functions must be called prior to calling this funtion.
+// The particles are read from the COMMON POUT. Right now the only provided 
+// information is Geant PID, 3 momentum components and the energy of the particle.
+   
+   fParticles->Clear();
+   
+   for (Int_t nrpidtype=0; nrpidtype < (fParticleTypeParameters->GetLast() + 1); nrpidtype++) {
+      Int_t nrpart = 0;
+      Int_t pidcode = ((TMevSimPartTypeParams *) (*fParticleTypeParameters)[nrpidtype])->GetGPid();
+      while ((TRACK.pout[(4*nrpart+3)*NPID+nrpidtype] > 0.0) || (TRACK.pout[(4*nrpart)*NPID+nrpidtype] != 0.0)) {
+        int poffset = 4*nrpart*NPID+nrpidtype;
+        Float_t px = TRACK.pout[poffset];
+        poffset += NPID;
+        Float_t py = TRACK.pout[poffset];
+        poffset += NPID;
+        Float_t pz = TRACK.pout[poffset];
+        poffset += NPID;
+        Float_t mass = TRACK.pout[poffset];
+        TParticle * p = new TParticle(
+                                         PDGFromId(pidcode),  // Get the PDG ID from GEANT ID
+                                         0,
+                                         0,
+                                         0,
+                                         0,
+                                         0,
+                                         px,
+                                         py,
+                                         pz,
+                                         sqrt(mass*mass+px*px+py*py+pz*pz),                               
+                                         0,
+                                         0,
+                                         0,
+                                         0);
+        fParticles->Add(p);
+        nrpart++;
+      }
+   }
+   return fParticles;
+}
+//______________________________________________________________________________
 void        TMevSim::SetNEvents(Int_t nEvents ) { 
 // Sets the number of events to be generated by MevSim.
 // Caution: Setting nEvents > 1 will have no effect, since only the last generated