]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliDecayerPolarized.cxx
Overlaps corrected, new shape of sectors
[u/mrichter/AliRoot.git] / EVGEN / AliDecayerPolarized.cxx
index 46218434bbc6168fde92e4a69a48973049a1c7ce..b13e5c33d4e3d08116bbc935790e8cc05965e894 100644 (file)
 
 ClassImp(AliDecayerPolarized)
 
+
+
 //____________________________________________________________
-AliDecayerPolarized::AliDecayerPolarized():AliDecayer()
+AliDecayerPolarized::AliDecayerPolarized():
+    fAlpha(0),
+    fSystRef(kHelicity),
+    fDecProd(kMuon),
+    fPol(0),
+    fMother(0),
+    fDaughter1(0),
+    fDaughter2(0)
 {
 // Default constructor
-    fAlpha=0;
-    fSystRef=kHelicity;
-    fDecProd=kMuon;
-    fMother=0;
-    fDaughter1=0;
-    fDaughter2=0;
-    fPol = new TF1("dsigdcostheta","1.+[0]*x*x",-1.,1.);
-    fPol->SetParameter(0,fAlpha);
+
 }
 
 //____________________________________________________________
-AliDecayerPolarized::AliDecayerPolarized(Double_t alpha, Polar_t systref, FinState_t decprod):AliDecayer()
+AliDecayerPolarized::AliDecayerPolarized(Double_t alpha, Polar_t systref, FinState_t decprod):
+    fAlpha(alpha),
+    fSystRef(systref),
+    fDecProd(decprod),
+    fPol(new TF1("dsigdcostheta","1.+[0]*x*x",-1.,1.)),
+    fMother(0),
+    fDaughter1(0),
+    fDaughter2(0)
 {
 // Another constructor
-    fAlpha=alpha;
-    fSystRef=systref;
-    fDecProd=decprod;
-    fMother=0;
-    fDaughter1=0;
-    fDaughter2=0;
-    fPol = new TF1("dsigdcostheta","1.+[0]*x*x",-1.,1.);
     fPol->SetParameter(0,fAlpha);
     if(fDecProd!=kMuon && fDecProd!=kElectron)
-    AliFatal("Only polarized decay into muons or electrons is implemented!");
+       AliFatal("Only polarized decay into muons or electrons is implemented!");
+}
+
+AliDecayerPolarized::AliDecayerPolarized(const AliDecayerPolarized &decayer):
+    AliDecayer(decayer),
+    fAlpha(0),
+    fSystRef(kHelicity),
+    fDecProd(kMuon),
+    fPol(new TF1("dsigdcostheta","1.+[0]*x*x",-1.,1.)),
+    fMother(0),
+    fDaughter1(0),
+    fDaughter2(0)   
+{
+    // Copy Constructor
+    decayer.Copy(*this);
 }
 
 //____________________________________________________________
 AliDecayerPolarized::~AliDecayerPolarized()
 {
 // Destructor
-    if(fPol) delete fPol; fPol=0;
-    if(fMother) delete fMother; fMother=0;
-    if(fDaughter1) delete fDaughter1; fDaughter1=0;
-    if(fDaughter2) delete fDaughter2; fDaughter2=0;
+    delete fPol; 
+    delete fMother;
+    delete fDaughter1;
+    delete fDaughter2;
 }
 //____________________________________________________________
 void AliDecayerPolarized::Decay(Int_t ipart, TLorentzVector *p)
@@ -103,10 +119,10 @@ void AliDecayerPolarized::Decay(Int_t ipart, TLorentzVector *p)
     v1.SetPxPyPzE(-px1,-py1,-pz1,e1);   //in the dimuon rest frame
     v2.SetPxPyPzE(px1,py1,pz1,e2); 
        
-    TLorentzVector PProj, PTarg; // In the CM frame
+    TLorentzVector pProj, pTarg; // In the CM frame
     Float_t mp = 0.938;
-    PProj.SetPxPyPzE(0.,0.,-7000.,TMath::Sqrt(7000.*7000.+mp*mp)); // projectile
-    PTarg.SetPxPyPzE(0.,0.,7000.,TMath::Sqrt(7000.*7000.+mp*mp)); // target
+    pProj.SetPxPyPzE(0.,0.,-7000.,TMath::Sqrt(7000.*7000.+mp*mp)); // projectile
+    pTarg.SetPxPyPzE(0.,0.,7000.,TMath::Sqrt(7000.*7000.+mp*mp)); // target
  
     TVector3 betajpsicm;
     betajpsicm = (-1./p->E()*p->Vect());
@@ -118,11 +134,11 @@ void AliDecayerPolarized::Decay(Int_t ipart, TLorentzVector *p)
       v2.RotateUz(v3jpsi);     
     } else if (fSystRef == kColSop){
       //  polarization axis: bisector of proj and target in the dimuon rest frame
-      PProj.Boost(betajpsicm);   //boost proj and targ from CM to DIMU rest frame
-      PTarg.Boost(betajpsicm);
+      pProj.Boost(betajpsicm);   //boost proj and targ from CM to DIMU rest frame
+      pTarg.Boost(betajpsicm);
 
       TVector3 zaxisCS;
-      zaxisCS=(((PProj.Vect()).Unit())-((PTarg.Vect()).Unit())).Unit();
+      zaxisCS=(((pProj.Vect()).Unit())-((pTarg.Vect()).Unit())).Unit();
       v1.RotateUz(zaxisCS);
       v2.RotateUz(zaxisCS);
     }
@@ -136,13 +152,13 @@ void AliDecayerPolarized::Decay(Int_t ipart, TLorentzVector *p)
 //    printf("v1 components (mu1 in polar. ref. syst.) %f %f %f %f\n",v1.Px(),v1.Py(),v1.Pz(),v1.E());
 //    printf("v2 components (mu2 in polar. ref. syst.) %f %f %f %f\n",v2.Px(),v2.Py(),v2.Pz(),v2.E());
 
-    Int_t status_decayed=11;
-    Int_t status_undecayed=1;
+    Int_t statusDecayed=11;
+    Int_t statusUndecayed=1;
         
    
-    fMother = new TParticle(ipart,status_decayed,0,-1,2,3,p->Px(),p->Py(),p->Pz(),p->E(),0.,0.,0.,0);   
-    fDaughter1 = new TParticle(d1->PdgCode(),status_undecayed,1,-1,0,0,v1.Px(),v1.Py(),v1.Pz(),v1.E(),0.,0.,0.,0);   
-    fDaughter2 = new TParticle(d2->PdgCode(),status_undecayed,1,-1,0,0,v2.Px(),v2.Py(),v2.Pz(),v2.E(),0.,0.,0.,0);
+    fMother = new TParticle(ipart,statusDecayed,0,-1,2,3,p->Px(),p->Py(),p->Pz(),p->E(),0.,0.,0.,0);   
+    fDaughter1 = new TParticle(d1->PdgCode(),statusUndecayed,1,-1,0,0,v1.Px(),v1.Py(),v1.Pz(),v1.E(),0.,0.,0.,0);   
+    fDaughter2 = new TParticle(d2->PdgCode(),statusUndecayed,1,-1,0,0,v2.Px(),v2.Py(),v2.Pz(),v2.E(),0.,0.,0.,0);
 
 }
 
@@ -159,3 +175,42 @@ Int_t AliDecayerPolarized::ImportParticles(TClonesArray *part)
 
   return part->GetEntries();
 }
+
+void  AliDecayerPolarized::Copy(TObject &) const
+{
+    //
+    // Copy *this onto AliDecayerPolarized -- not implemented
+    //
+    Fatal("Copy","Not implemented!\n");
+}
+
+void AliDecayerPolarized::SetForceDecay(Int_t)
+{
+    // This method is dummy
+}
+
+void AliDecayerPolarized::ForceDecay()
+{
+    // This method is dummy
+    AliWarning("Method not implemented for this class !\n");
+}
+
+Float_t AliDecayerPolarized::GetPartialBranchingRatio(Int_t)
+{
+    // This method is dummy
+    return  1.;
+}
+
+Float_t AliDecayerPolarized::GetLifetime(Int_t)
+{
+    // This method is dummy
+    AliWarning("Method not implemented for this class !\n");
+    return -1.;
+}
+
+void AliDecayerPolarized::ReadDecayTable()
+{
+    // This method is dummy
+    AliWarning("Method not implemented for this class !\n");
+}
+