Few switches added
authorskowron <skowron@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 Apr 2004 13:57:05 +0000 (13:57 +0000)
committerskowron <skowron@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 Apr 2004 13:57:05 +0000 (13:57 +0000)
HBTAN/AliHBTPositionRandomizer.cxx
HBTAN/AliHBTPositionRandomizer.h

index 4068a4c..69fae8d 100644 (file)
@@ -25,6 +25,7 @@ AliHBTPositionRandomizer::AliHBTPositionRandomizer():
  fModel(0),
  fAddToExistingPos(kFALSE),
  fOnlyParticlesFromVertex(kFALSE),
+ fRandomizeTracks(kFALSE),
  fVX(0.0),
  fVY(0.0),
  fVZ(0.0)
@@ -39,6 +40,7 @@ AliHBTPositionRandomizer::AliHBTPositionRandomizer(AliHBTReader* reader):
  fModel(0),
  fAddToExistingPos(kFALSE),
  fOnlyParticlesFromVertex(kFALSE),
+ fRandomizeTracks(kFALSE),
  fVX(0.0),
  fVY(0.0),
  fVZ(0.0)
@@ -54,6 +56,7 @@ AliHBTPositionRandomizer::AliHBTPositionRandomizer(const AliHBTPositionRandomize
  fModel(0),
  fAddToExistingPos(kFALSE),
  fOnlyParticlesFromVertex(kFALSE),
+ fRandomizeTracks(kFALSE),
  fVX(0.0),
  fVY(0.0),
  fVZ(0.0)
@@ -92,7 +95,7 @@ AliHBTEvent* AliHBTPositionRandomizer::GetTrackEvent()
  // gets from fReader and randomizes current track event
  if (fReader == 0x0) return 0x0;
  AliHBTEvent *e =  fReader->GetTrackEvent();
- if (e->IsRandomized() == kFALSE) Randomize(e);
+ if (fRandomizeTracks) if (e->IsRandomized() == kFALSE) Randomize(e);
  return e;
 }
 /*********************************************************************/
@@ -105,6 +108,7 @@ Int_t AliHBTPositionRandomizer::Read(AliHBTRun* particles, AliHBTRun *tracks)
   Int_t err = fReader->Read(particles,tracks);
   if (err) return err;
   Randomize(particles);
+  if (fRandomizeTracks) Randomize(tracks);
   return 0;
 }
 /*********************************************************************/
@@ -143,7 +147,20 @@ void AliHBTPositionRandomizer::Randomize(AliHBTEvent* event) const
      AliHBTParticle* p = event->GetParticle(i);
      Double_t x,y,z,t=0.0;
      fRandomizer->Randomize(x,y,z,p);
-     p->SetProductionVertex(x*kfmtocm,y*kfmtocm,z*kfmtocm,t*kfmtocm);
+     
+     Double_t nx = x*kfmtocm;
+     Double_t ny = y*kfmtocm;
+     Double_t nz = z*kfmtocm;
+     Double_t nt = t*kfmtocm;
+     
+     if (fAddToExistingPos)
+      {
+       nx += p->Vx();
+       ny += p->Vy();
+       nz += p->Vz();
+       nt += p->T();
+      }
+     p->SetProductionVertex(nx,ny,nz,nt); 
    }
   event->SetRandomized();
 }
index 300c6aa..b7dde59 100644 (file)
@@ -56,6 +56,10 @@ class AliHBTPositionRandomizer: public AliHBTReader
    void SetGaussianBall(Double_t rx, Double_t ry, Double_t rz);
    void SetCyllinderSurface(Double_t r, Double_t l);
    
+   void AddToPosition(Bool_t flag){fAddToExistingPos = flag;}
+   void RandomizeTracks(Bool_t flag){fRandomizeTracks = flag;}
+   
+   
  protected:
    void Randomize(Double_t& x,Double_t& y,Double_t&z, AliHBTParticle*p);
    Int_t ReadNext(){return (fReader)?fReader->Next():1;}
@@ -69,6 +73,8 @@ class AliHBTPositionRandomizer: public AliHBTReader
    Bool_t   fAddToExistingPos;  //Determines if randomized position should be added to previous one, or overwrite old one
    Bool_t   fOnlyParticlesFromVertex; //Determines if randomization should be performed for particles from vertex
 
+   Bool_t   fRandomizeTracks; //Determines if tracks should also be randimized 
+   
    Double_t fVX; //vertex position
    Double_t fVY; //vertex position
    Double_t fVZ; //vertex position