Give the ability to guess if particle is primary
authorakisiel <akisiel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 26 Jun 2008 08:34:12 +0000 (08:34 +0000)
committerakisiel <akisiel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 26 Jun 2008 08:34:12 +0000 (08:34 +0000)
PWG2/FEMTOSCOPY/AliFemto/AliFemtoEventReaderESDChainKine.cxx
PWG2/FEMTOSCOPY/AliFemtoUser/AliFemtoModelGausRinvFreezeOutGenerator.cxx
PWG2/FEMTOSCOPY/AliFemtoUser/AliFemtoModelGausRinvFreezeOutGenerator.h

index b0ce8f0..4cf66c4 100644 (file)
@@ -347,9 +347,9 @@ AliFemtoEvent* AliFemtoEventReaderESDChainKine::ReturnHbtEvent()
        
       // Freeze-out coordinates
       double fpx=0.0, fpy=0.0, fpz=0.0, fpt=0.0;
-      fpx = tPart->Vx();
-      fpy = tPart->Vy();
-      fpz = tPart->Vz();
+      fpx = tPart->Vx() - fV1[0];
+      fpy = tPart->Vy() - fV1[1];
+      fpz = tPart->Vz() - fV1[2];
       fpt = tPart->T();
 
       if (motherids[TMath::Abs(esdtrack->GetLabel())]>0) {
index 31b8016..8d4faa5 100644 (file)
@@ -16,7 +16,8 @@
 
 //_______________________
 AliFemtoModelGausRinvFreezeOutGenerator::AliFemtoModelGausRinvFreezeOutGenerator() :
-  fSizeInv(0)
+  fSizeInv(0),
+  fSelectPrimary(false)
 {
   // Default constructor
   fRandom = new TRandom2();
@@ -25,7 +26,8 @@ AliFemtoModelGausRinvFreezeOutGenerator::AliFemtoModelGausRinvFreezeOutGenerator
 //_______________________
 AliFemtoModelGausRinvFreezeOutGenerator::AliFemtoModelGausRinvFreezeOutGenerator(const AliFemtoModelGausRinvFreezeOutGenerator &aModel):
   AliFemtoModelFreezeOutGenerator(),
-  fSizeInv(0)
+  fSizeInv(0),
+  fSelectPrimary(false)
 {
   // Copy constructor
   fRandom = new TRandom2();
@@ -39,14 +41,40 @@ AliFemtoModelGausRinvFreezeOutGenerator::~AliFemtoModelGausRinvFreezeOutGenerato
 //_______________________
 void AliFemtoModelGausRinvFreezeOutGenerator::GenerateFreezeOut(AliFemtoPair *aPair)
 {
-  // Generate two particle emission points with respect
-  // to their pair momentum 
-  // The source is the 3D Gaussian ellipsoid in the LCMS frame
   AliFemtoModelHiddenInfo *inf1 = (AliFemtoModelHiddenInfo *) aPair->Track1()->HiddenInfo();
   AliFemtoModelHiddenInfo *inf2 = (AliFemtoModelHiddenInfo *) aPair->Track2()->HiddenInfo();
 
   if ((!inf1) || (!inf2)) { cout << "Hidden info not created! "  << endl; exit(kFALSE); }
 
+  if (fSelectPrimary) {
+    // assume the emission point is in [cm] and try to judge if
+    // both particles are primary
+    Double_t dist1 = inf1->GetEmissionPoint()->perp();
+    Double_t dist2 = inf2->GetEmissionPoint()->perp();
+
+    if ((dist1 > 0.005) && (dist2 > 0.005)) {
+      // At least one particle is non primary
+      if (!(inf1->GetEmissionPoint())) {
+       AliFemtoLorentzVector tPos(-1000,1000,-500,0);
+       inf1->SetEmissionPoint(&tPos);
+      }
+      else
+       inf1->SetEmissionPoint(-1000,1000,-500,0);
+      if (!(inf2->GetEmissionPoint())) {
+       AliFemtoLorentzVector tPos(fRandom->Gaus(0,1000.0),fRandom->Gaus(0,1000),fRandom->Gaus(0,1000),0.0);
+       inf2->SetEmissionPoint(&tPos);
+      }
+      else
+       inf2->SetEmissionPoint(fRandom->Gaus(0,1000), fRandom->Gaus(0,1000), fRandom->Gaus(0,1000), 0.0);
+      
+      return;
+    }
+  }
+
+  // Generate two particle emission points with respect
+  // to their pair momentum 
+  // The source is the 3D Gaussian ellipsoid in the LCMS frame
+
   // Calculate sum momenta
   Double_t tPx = inf1->GetTrueMomentum()->x() + inf2->GetTrueMomentum()->x();
   Double_t tPy = inf1->GetTrueMomentum()->y() + inf2->GetTrueMomentum()->y();
@@ -122,3 +150,13 @@ inline AliFemtoModelFreezeOutGenerator* AliFemtoModelGausRinvFreezeOutGenerator:
   AliFemtoModelFreezeOutGenerator* tModel = new AliFemtoModelGausRinvFreezeOutGenerator(*this); 
   return tModel; 
 }
+//_______________________
+void AliFemtoModelGausRinvFreezeOutGenerator::SetSelectPrimaryFromHidden(bool aUse)
+{
+  fSelectPrimary = aUse;
+}
+Bool_t AliFemtoModelGausRinvFreezeOutGenerator::GetSelectPrimaryFromHidden()
+{
+  return fSelectPrimary;
+}
+
index 281a380..830418f 100644 (file)
@@ -20,6 +20,9 @@ class AliFemtoModelGausRinvFreezeOutGenerator : public AliFemtoModelFreezeOutGen
   virtual ~AliFemtoModelGausRinvFreezeOutGenerator();
   virtual void GenerateFreezeOut(AliFemtoPair *aPair);
 
+  void SetSelectPrimaryFromHidden(bool aUse);
+  Bool_t GetSelectPrimaryFromHidden();
+
   void SetSizeInv(Double_t aSizeInv);
   
   Double_t GetSizeInv() const;
@@ -27,7 +30,12 @@ class AliFemtoModelGausRinvFreezeOutGenerator : public AliFemtoModelFreezeOutGen
   virtual AliFemtoModelFreezeOutGenerator* Clone() const;
 
  protected:
-  Double_t fSizeInv;
+  Double_t fSizeInv;        // Size of the source
+  Bool_t fSelectPrimary;    // If set to true, the existing hidden info is assumed
+                            // to contain the particle creation point (in cm)
+                            // and the model will try to guess whether the particle
+                            // is primary based on that and assign creation point
+                            // only for primary particles
 
  private:
   AliFemtoModelFreezeOutGenerator* GetGenerator() const;