]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TEvtGen/EvtGen/EvtGenBase/EvtDecayIncoherent.cpp
Converting TEvtGen to native cmake
[u/mrichter/AliRoot.git] / TEvtGen / EvtGen / EvtGenBase / EvtDecayIncoherent.cpp
diff --git a/TEvtGen/EvtGen/EvtGenBase/EvtDecayIncoherent.cpp b/TEvtGen/EvtGen/EvtGenBase/EvtDecayIncoherent.cpp
new file mode 100644 (file)
index 0000000..68c74b3
--- /dev/null
@@ -0,0 +1,87 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package developed jointly
+//      for the BaBar and CLEO collaborations.  If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 1998      Caltech, UCSB
+//
+// Module: EvtGen/EvtDecayIncoherent.cc
+//
+// Description:
+//
+// Modification history:
+//
+//    DJL/RYD     August 11, 1998         Module created
+//
+//------------------------------------------------------------------------
+#include "EvtGenBase/EvtPatches.hh"
+
+#include "EvtGenBase/EvtDecayBase.hh"
+#include "EvtGenBase/EvtDecayIncoherent.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtRadCorr.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtPDL.hh"
+
+
+void EvtDecayIncoherent::makeDecay(EvtParticle* p, bool recursive){
+
+  //initialize this the hard way..
+  //Lange June 26, 2000
+  for (size_t i=0; i<static_cast<unsigned int>(MAX_DAUG); i++ ) { 
+    spinDensitySet[i]=0;
+  }
+
+  _daugsDecayedByParentModel=false;
+
+  decay(p);
+  p->setDecayProb(1.0);
+
+  EvtSpinDensity rho;
+
+  rho.setDiag(p->getSpinStates());
+
+  p->setSpinDensityBackward(rho);
+
+  if (getPHOTOS() || EvtRadCorr::alwaysRadCorr()) {
+    EvtRadCorr::doRadCorr(p);
+  }
+
+  if(!recursive) return;
+
+  //Now decay the daughters.
+
+  if ( !daugsDecayedByParentModel()) {
+    
+    for(size_t i=0;i<p->getNDaug();i++){
+      //Need to set the spin density of the daughters to be
+      //diagonal.
+      rho.setDiag(p->getDaug(i)->getSpinStates());
+      //if (p->getDaug(i)->getNDaug()==0){
+      //only do this if the user has not already set the 
+      //spin density matrix herself.
+      //Lange June 26, 2000
+      if ( isDaughterSpinDensitySet(i)==0 ) { 
+       p->getDaug(i)->setSpinDensityForward(rho);
+      }
+      else{
+       //report(INFO,"EvtGen") << "spinDensitymatrix already set!!!\n";
+       EvtSpinDensity temp=p->getDaug(i)->getSpinDensityForward();
+       //      report(INFO,"EvtGen") <<temp<<endl;
+      }
+      //Now decay the daughter.  Really!
+      p->getDaug(i)->decay();
+    } 
+  }
+                           
+}
+
+
+
+
+
+
+