]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HBTAN/AliHBTPairCut.cxx
Non-buffering readers implemented, proper changes in analysis. Compiler warnings...
[u/mrichter/AliRoot.git] / HBTAN / AliHBTPairCut.cxx
index 508bf3edfa1518427a7251767e54806573af673a..95901b28762ca38838c7189ca5e0538463ac73de 100644 (file)
@@ -1,49 +1,77 @@
+/* $Id$ */
+
+//-------------------------------------------------------------------
+// Class AliHBTPairCut:
+// implements cut on the pair of particles
+// more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html
+// Author: Piotr.Skowronski@cern.ch
+//-------------------------------------------------------------------
+
 #include "AliHBTPairCut.h"
 #include "AliHBTPair.h"
+#include "AliHBTParticleCut.h"
 
 ClassImp(AliHBTPairCut)
-const Int_t AliHBTPairCut::fkgMaxCuts = 50;
+const Int_t AliHBTPairCut::fgkMaxCuts = 50;
 /**********************************************************/
 
 AliHBTPairCut::AliHBTPairCut():
   fNCuts(0)
 {
-//constructor
+  //constructor
   fFirstPartCut = new AliHBTEmptyParticleCut(); //empty cuts
   fSecondPartCut= new AliHBTEmptyParticleCut(); //empty cuts
     
-  fCuts = new AliHbtBasePairCut*[fkgMaxCuts];
+  fCuts = new AliHbtBasePairCut*[fgkMaxCuts];
+}
+/**********************************************************/
+
+AliHBTPairCut::AliHBTPairCut(const AliHBTPairCut& in):
+ TNamed(in)
+{
+  //copy constructor
+  fCuts = new AliHbtBasePairCut*[fgkMaxCuts];
+  fNCuts = in.fNCuts;
+
+  fFirstPartCut = (AliHBTParticleCut*)in.fFirstPartCut->Clone();
+  fSecondPartCut = (AliHBTParticleCut*)in.fSecondPartCut->Clone();
+  for (Int_t i = 0;i<fNCuts;i++)
+    {
+      fCuts[i] = (AliHbtBasePairCut*)in.fCuts[i]->Clone();//create new object (clone) and rember pointer to it
+    }
 }
 /**********************************************************/
 
-AliHBTPairCut::AliHBTPairCut(const AliHBTPairCut& in)
+AliHBTPairCut&  AliHBTPairCut::operator=(const AliHBTPairCut& in)
 {
-//copy constructor
fCuts = new AliHbtBasePairCut*[fkgMaxCuts];
- fNCuts = in.fNCuts;
+  //assignment operator
 fCuts = new AliHbtBasePairCut*[fgkMaxCuts];
 fNCuts = in.fNCuts;
 
- fFirstPartCut = (AliHBTParticleCut*)in.fFirstPartCut->Clone();
- fSecondPartCut = (AliHBTParticleCut*)in.fSecondPartCut->Clone();
 fFirstPartCut = (AliHBTParticleCut*)in.fFirstPartCut->Clone();
 fSecondPartCut = (AliHBTParticleCut*)in.fSecondPartCut->Clone();
  
- for (Int_t i = 0;i<fNCuts;i++)
-   {
-     fCuts[i] = (AliHbtBasePairCut*)in.fCuts[i]->Clone();//create new object (clone) and rember pointer to it
-   }
+  for (Int_t i = 0;i<fNCuts;i++)
+    {
+      fCuts[i] = (AliHbtBasePairCut*)in.fCuts[i]->Clone();//create new object (clone) and rember pointer to it
+    }
+  return * this;
 }
 /**********************************************************/
 
 AliHBTPairCut::~AliHBTPairCut()
 {
-//destructor
+  //destructor
   if (fFirstPartCut != fSecondPartCut)
-   {
-     delete fSecondPartCut;
-   }
+    {
+      delete fSecondPartCut;
+    }
   delete fFirstPartCut;
   for (Int_t i = 0;i<fNCuts;i++)
-   {
-     delete fCuts[i];
-   }
+    {
+      delete fCuts[i];
+    }
   delete []fCuts;
 } 
 /**********************************************************/
@@ -51,97 +79,100 @@ AliHBTPairCut::~AliHBTPairCut()
 /**********************************************************/
 
 void AliHBTPairCut::AddBasePairCut(AliHbtBasePairCut* basecut)
- {
- //adds the base pair cut (cut on one value)
-   if (!basecut) return;
-   if( fNCuts == (fkgMaxCuts-1) )
+{
 //adds the base pair cut (cut on one value)
+  
+  if (!basecut) return;
+  if( fNCuts == (fgkMaxCuts-1) )
     {
       Warning("AddBasePairCut","Not enough place for another cut");
       return;
     }
-   fCuts[fNCuts++]=basecut;
- }
+  fCuts[fNCuts++]=basecut;
+}
 /**********************************************************/
 
-Bool_t AliHBTPairCut::Pass(AliHBTPair* pair)
+Bool_t AliHBTPairCut::Pass(AliHBTPair* pair) const
 {
-//methods which checks if given pair meets all criteria of the cut
-//if it meets returns FALSE
-//if NOT   returns    TRUE
- if(!pair) 
-  {
-    Warning("Pass","No Pasaran! We never accept NULL pointers");
-    return kTRUE;
-  }
- //check particle's cuts
- if( ( fFirstPartCut->Pass( pair->Particle1()) ) || 
-     ( fSecondPartCut->Pass(pair->Particle2()) )   )
-   {  
-     return kTRUE;
-   }
- return PassPairProp(pair);
+  //methods which checks if given pair meets all criteria of the cut
+  //if it meets returns FALSE
+  //if NOT   returns    TRUE
 if(!pair) 
+    {
+      Warning("Pass","No Pasaran! We never accept NULL pointers");
+      return kTRUE;
+    }
+  
 //check particle's cuts
 if( ( fFirstPartCut->Pass( pair->Particle1()) ) || 
+      ( fSecondPartCut->Pass(pair->Particle2()) )   )
+    {  
+      return kTRUE;
+    }
 return PassPairProp(pair);
 }
 /**********************************************************/
 
-Bool_t AliHBTPairCut::PassPairProp(AliHBTPair* pair)
+Bool_t AliHBTPairCut::PassPairProp(AliHBTPair* pair) const
 {
-//methods which checks if given pair meets all criteria of the cut
-//if it meets returns FALSE
-//if NOT   returns    TRUE
- //examine all base pair cuts
- for (Int_t i = 0;i<fNCuts;i++)
-   {
-    if ( (fCuts[i]->Pass(pair)) ) return kTRUE; //if one of the cuts reject, then reject
-   }
- return kFALSE;
+  //methods which checks if given pair meets all criteria of the cut
+  //if it meets returns FALSE
+  //if NOT   returns    TRUE
 //examine all base pair cuts
 for (Int_t i = 0;i<fNCuts;i++)
+    {
+      if ( (fCuts[i]->Pass(pair)) ) return kTRUE; //if one of the cuts reject, then reject
+    }
 return kFALSE;
 }
 /**********************************************************/
 
 void AliHBTPairCut::SetFirstPartCut(AliHBTParticleCut* cut)
 {
- if(!cut) 
-   {
-     Error("SetFirstPartCut","argument is NULL");
-     return;
-   }
- delete fFirstPartCut;
- fFirstPartCut = (AliHBTParticleCut*)cut->Clone();
-
+  // set cut for the first particle
+  if(!cut) 
+    {
+      Error("SetFirstPartCut","argument is NULL");
+      return;
+    }
+  delete fFirstPartCut;
+  fFirstPartCut = (AliHBTParticleCut*)cut->Clone();
+  
 }
 /**********************************************************/
 
 void AliHBTPairCut::SetSecondPartCut(AliHBTParticleCut* cut)
 {
- if(!cut) 
-   {
-     Error("SetSecondPartCut","argument is NULL");
-     return;
-   }
- delete fSecondPartCut;
- fSecondPartCut = (AliHBTParticleCut*)cut->Clone();
+  // set cut for the second particle
+  if(!cut) 
+    {
+      Error("SetSecondPartCut","argument is NULL");
+      return;
+    }
+  delete fSecondPartCut;
+  fSecondPartCut = (AliHBTParticleCut*)cut->Clone();
 }
 /**********************************************************/
 
 void AliHBTPairCut::SetPartCut(AliHBTParticleCut* cut)
 {
-//sets the the same cut on both particles
- if(!cut) 
-   {
-     Error("SetFirstPartCut","argument is NULL");
-     return;
-   }
- delete fFirstPartCut;
- fFirstPartCut = (AliHBTParticleCut*)cut->Clone();
- delete fSecondPartCut; //even if null should not be harmful
- fSecondPartCut = fFirstPartCut;
+  //sets the the same cut on both particles
 if(!cut) 
+    {
+      Error("SetFirstPartCut","argument is NULL");
+      return;
+    }
 delete fFirstPartCut;
 fFirstPartCut = (AliHBTParticleCut*)cut->Clone();
+  
 delete fSecondPartCut; //even if null should not be harmful
 fSecondPartCut = fFirstPartCut;
 }
 /**********************************************************/
 
 void AliHBTPairCut::SetQInvRange(Double_t min, Double_t max)
 {
+  // set range of accepted invariant masses
   AliHBTQInvCut* cut= (AliHBTQInvCut*)FindCut(kHbtPairCutPropQInv);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTQInvCut(min,max);
@@ -149,6 +180,7 @@ void AliHBTPairCut::SetQInvRange(Double_t min, Double_t max)
 /**********************************************************/
 void AliHBTPairCut::SetQOutCMSLRange(Double_t min, Double_t max)
 {
+  // set range of accepted QOut in CMS
   AliHBTQOutCMSLCCut* cut= (AliHBTQOutCMSLCCut*)FindCut(kHbtPairCutPropQOutCMSLC);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTQOutCMSLCCut(min,max);
@@ -157,6 +189,7 @@ void AliHBTPairCut::SetQOutCMSLRange(Double_t min, Double_t max)
 /**********************************************************/
 void AliHBTPairCut::SetQSideCMSLRange(Double_t min, Double_t max)
 {
+  // set range of accepted QSide in CMS
   AliHBTQSideCMSLCCut* cut= (AliHBTQSideCMSLCCut*)FindCut(kHbtPairCutPropQSideCMSLC);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTQSideCMSLCCut(min,max);
@@ -165,6 +198,7 @@ void AliHBTPairCut::SetQSideCMSLRange(Double_t min, Double_t max)
 /**********************************************************/
 void AliHBTPairCut::SetQLongCMSLRange(Double_t min, Double_t max)
 {
+  // set range of accepted QLong in CMS
   AliHBTQLongCMSLCCut* cut= (AliHBTQLongCMSLCCut*)FindCut(kHbtPairCutPropQLongCMSLC);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTQLongCMSLCCut(min,max);
@@ -174,6 +208,7 @@ void AliHBTPairCut::SetQLongCMSLRange(Double_t min, Double_t max)
 
 void AliHBTPairCut::SetKtRange(Double_t min, Double_t max)
 {
+  // set range of accepted Kt (?)
   AliHBTKtCut* cut= (AliHBTKtCut*)FindCut(kHbtPairCutPropKt);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTKtCut(min,max);
@@ -182,6 +217,7 @@ void AliHBTPairCut::SetKtRange(Double_t min, Double_t max)
 
 void AliHBTPairCut::SetKStarRange(Double_t min, Double_t max)
 {
+  // set range of accepted KStar (?)
   AliHBTKStarCut* cut= (AliHBTKStarCut*)FindCut(kHbtPairCutPropKStar);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTKStarCut(min,max);
@@ -190,13 +226,14 @@ void AliHBTPairCut::SetKStarRange(Double_t min, Double_t max)
 
 AliHbtBasePairCut* AliHBTPairCut::FindCut(AliHBTPairCutProperty property)
 {
- for (Int_t i = 0;i<fNCuts;i++)
-  {
-    if (fCuts[i]->GetProperty() == property) 
-       return fCuts[i]; //we found the cut we were searching for
-  }
- return 0x0; //we did not found this cut
+  // Find the cut corresponding to "property"
+  for (Int_t i = 0;i<fNCuts;i++)
+    {
+      if (fCuts[i]->GetProperty() == property) 
+       return fCuts[i]; //we found the cut we were searching for
+    }
+  
+  return 0x0; //we did not found this cut
   
 }
 /**********************************************************/
@@ -204,57 +241,54 @@ AliHbtBasePairCut* AliHBTPairCut::FindCut(AliHBTPairCutProperty property)
 void AliHBTPairCut::Streamer(TBuffer &b)
 {
   // Stream all objects in the array to or from the I/O buffer.
-
-   UInt_t R__s, R__c;
-   if (b.IsReading()) 
+  
+  UInt_t R__s, R__c;
+  if (b.IsReading()) 
     {
       Version_t v = b.ReadVersion(&R__s, &R__c);
       if (v > -1)
        {
-        delete fFirstPartCut;
-        delete fSecondPartCut;
-        fFirstPartCut = 0x0;
-        fSecondPartCut = 0x0;
-        TObject::Streamer(b);
-        b >> fFirstPartCut;
-        b >> fSecondPartCut;
-        b >> fNCuts;
-        for (Int_t i = 0;i<fNCuts;i++)
-         {
-          b >> fCuts[i];
-         }
+          delete fFirstPartCut;
+          delete fSecondPartCut;
+          fFirstPartCut = 0x0;
+          fSecondPartCut = 0x0;
+          TObject::Streamer(b);
+          b >> fFirstPartCut;
+          b >> fSecondPartCut;
+          b >> fNCuts;
+          for (Int_t i = 0;i<fNCuts;i++)
+           {
+             b >> fCuts[i];
+           }
         }
-       b.CheckByteCount(R__s, R__c,AliHBTPairCut::IsA());
-        
+      b.CheckByteCount(R__s, R__c,AliHBTPairCut::IsA());
     } 
-   else 
+  else 
     {
-     R__c = b.WriteVersion(AliHBTPairCut::IsA(), kTRUE);
-     TObject::Streamer(b);
-     b << fFirstPartCut;
-     b << fSecondPartCut;
-     b << fNCuts;
-     for (Int_t i = 0;i<fNCuts;i++)
-      {
-       b << fCuts[i];
-      }
-     b.SetByteCount(R__c, kTRUE);
-   }
+      R__c = b.WriteVersion(AliHBTPairCut::IsA(), kTRUE);
+      TObject::Streamer(b);
+      b << fFirstPartCut;
+      b << fSecondPartCut;
+      b << fNCuts;
+      for (Int_t i = 0;i<fNCuts;i++)
+        {
+          b << fCuts[i];
+        }
+      b.SetByteCount(R__c, kTRUE);
+    }
 }
 
 ClassImp(AliHBTEmptyPairCut)
-
+  
 void AliHBTEmptyPairCut::Streamer(TBuffer &b)
- {
-   AliHBTPairCut::Streamer(b);
- }
+{
+//streamer for empty pair cut
+  AliHBTPairCut::Streamer(b);
+}
 
 ClassImp(AliHbtBasePairCut)
-
 ClassImp(AliHBTQInvCut)
-
 ClassImp(AliHBTKtCut)
-
 ClassImp(AliHBTQSideCMSLCCut)
 ClassImp(AliHBTQOutCMSLCCut)
 ClassImp(AliHBTQLongCMSLCCut)