Event blending implemented
authorskowron <skowron@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 6 Sep 2003 14:15:08 +0000 (14:15 +0000)
committerskowron <skowron@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 6 Sep 2003 14:15:08 +0000 (14:15 +0000)
HBTAN/AliHBTEvent.cxx
HBTAN/AliHBTEvent.h
HBTAN/AliHBTReader.cxx
HBTAN/AliHBTReader.h

index c43bdea9c0f81106b73440666e0587373fec9c7a..b7748245c25ee2049e2926bb843aa43f7c2eb0e0 100644 (file)
@@ -150,3 +150,15 @@ void AliHBTEvent::Expand()
  delete [] fParticles; //delete old array
   fParticles = tmpParticles; //copy new pointer to the array of pointers to particles
 }
+/**************************************************************************/ 
+
+void AliHBTEvent::SwapParticles(Int_t i, Int_t j)
+{
+//swaps particles positions; used by AliHBTEvent::Blend
+  if ( (i<0) || (i>=fNParticles)) return;
+  if ( (j<0) || (j>=fNParticles)) return;
+  
+  AliHBTParticle* tmp = fParticles[i];
+  fParticles[i] = fParticles[j];
+  fParticles[j] = tmp;
+}
index 1523be2eda194131ad5024ee083e12dc4628f869..36e60743c5a8a1ad6bd129643895c317d3ccb4ea 100644 (file)
@@ -42,6 +42,7 @@ class AliHBTEvent: public TObject
     Bool_t  IsOwner() {return fOwner;}
     void    SetRandomized(Bool_t rd = kTRUE){fRandomized = rd;}
     Bool_t  IsRandomized()const {return fRandomized;}
+    void    SwapParticles(Int_t i, Int_t j);//swaps particles positions; used by AliHBTEvent::Blend
   protected:
     Int_t  fSize;       //!current size of the array
     AliHBTParticle ** fParticles; //!array of pointers to the particles
index 1cecb7e47d4ca497f1ab43204991d1101103a2df..fd4d25d213df324df7ca22f7258b070039f8a0d7 100644 (file)
@@ -4,6 +4,7 @@
 #include <TObjString.h>
 #include <TObjArray.h>
 #include <TClass.h>
+#include <TRandom.h>
 
 #include "AliHBTParticleCut.h"
 #include "AliHBTEvent.h"
@@ -67,6 +68,8 @@ Int_t AliHBTReader::Next()
   if ( ReadNext() == kTRUE)
      return kTRUE;
   
+  if (fBlend) Blend();
+  
   if (fBufferEvents)
    {
      if ( ReadsTracks() && fTracksEvent) 
@@ -303,4 +306,17 @@ TString& AliHBTReader::GetDirName(Int_t entry)
   if (gDebug > 0) Info("GetDirName","Returned ok %s",dir->String().Data());
   return dir->String();
 }
+/*************************************************************************************/
 
+void AliHBTReader::Blend()
+{
+  //randomly change positions of the particles after reading
+  //is used to check if some distr depends on order of particles
+  //(tracking gives particles Pt sorted)
+  for (Int_t i = 2; i < fParticlesEvent->GetNumberOfParticles(); i++)
+   {
+     Int_t with = gRandom->Integer(i);
+     fParticlesEvent->SwapParticles(i,with);
+     if (fTracksEvent) fTracksEvent->SwapParticles(i,with);
+   }
+}
index e7a1cfaf5b7beb9d0b22dae5a35a7c26a417f16f..e986b8d36f12562f4f525a2880313c594b116d90 100644 (file)
@@ -42,7 +42,7 @@ class AliHBTReader: public TNamed
     
     void                 SetDirs(TObjArray* dirs){fDirs = dirs;} //sets array directories names
     void                 SetEventBuffering(Bool_t flag){fBufferEvents = flag;}
-    
+    void          SetBlend(Bool_t flag = kTRUE){fBlend=flag;}
     virtual Int_t GetNumberOfDirs() const {return (fDirs)?fDirs->GetEntries():0;}
   protected:
     
@@ -63,17 +63,19 @@ class AliHBTReader: public TNamed
     Bool_t        fIsRead;//!flag indicating if the data are already read
     Bool_t        fBufferEvents;//flag indicating if the data should be bufferred
     
+    Bool_t        fBlend;// flag indicating if randomly change positions of the particles after reading
     virtual Int_t ReadNext() = 0; //this methods reads next event and put result in fTracksEvent and/or fParticlesEvent
     Bool_t Pass(AliHBTParticle*);
     Bool_t Pass(Int_t pid);
-
+    void Blend();
+    
     TString& GetDirName(Int_t);
     
   private:
   
   public:
-    ClassDef(AliHBTReader,2)//version 2 - TNamed as parental class
-    
+    ClassDef(AliHBTReader,3)//version 2 - TNamed as parental class
+                            //version 3 - Blending added
 };
 
 #endif