]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HBTAN/AliHBTParticleCut.cxx
Few switches added
[u/mrichter/AliRoot.git] / HBTAN / AliHBTParticleCut.cxx
index 838781f211cba7654d67832c6838f6e8c4698299..204430625f0652ca66c5349dd0add2c097bd6f9c 100644 (file)
@@ -1,24 +1,47 @@
 #include "AliHBTParticleCut.h"
+//__________________________________________________________________________
+////////////////////////////////////////////////////////////////////////////
+//                                                                        //
+// class AliHBTParticleCut                                                //
+//                                                                        //
+// Classes for single particle cuts                                       //
+// User should use only AliHBTParticleCut, eventually                     //
+// EmptyCut which passes all particles                                    //
+// There is all interface for setting cuts on all particle properties     //
+// The main method is Pass - which returns                                //
+//         True to reject particle                                        //
+//         False in case it meets all the criteria of the given cut       //
+//                                                                        //
+// User should create (and also destroy) cuts himself                     // 
+// and then pass them to the Analysis And Function by a proper method     //
+//                                                                        //
+//                                                                        //
+// more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html   //
+// resonsible: Piotr Skowronski@cern.ch                                   //
+//                                                                        //
+////////////////////////////////////////////////////////////////////////////
 
 #include <Riostream.h>
 
+
 ClassImp(AliHBTParticleCut)
-const Int_t AliHBTParticleCut::fkgMaxCuts = 50;
+const Int_t AliHBTParticleCut::fgkMaxCuts = 50;
 /******************************************************************/
 
-AliHBTParticleCut::AliHBTParticleCut()
- {
-   fCuts = new AliHbtBaseCut* [fkgMaxCuts];//last property in the property
-                                         //property enum => defines number of properties
-   fNCuts = 0;
-   fPID  = 0;
- }
+AliHBTParticleCut::AliHBTParticleCut():
+ fCuts(new AliHbtBaseCut* [fgkMaxCuts]),//last property in the property enum => defines number of properties
+ fNCuts(0),
+ fPID(0)
+{
+  //default ctor
+}
 /******************************************************************/
 
 AliHBTParticleCut::AliHBTParticleCut(const AliHBTParticleCut& in):
- TObject()
+ TObject(in)
 {
-  fCuts = new AliHbtBaseCut* [fkgMaxCuts];//last property in the property
+  //cpy ctor
+  fCuts = new AliHbtBaseCut* [fgkMaxCuts];//last property in the property
                                          //property enum => defines number of properties
   fNCuts = in.fNCuts;
   fPID  = in.fPID;
@@ -28,9 +51,28 @@ AliHBTParticleCut::AliHBTParticleCut(const AliHBTParticleCut& in):
    }
 }
 /******************************************************************/
+AliHBTParticleCut& AliHBTParticleCut::operator=(const AliHBTParticleCut& in)
+{
+  //assigment operator
+  Info("operator=","operator=operator=operator=operator=\noperator=operator=operator=operator=");
+  for (Int_t i = 0;i<fNCuts;i++)
+   {
+     delete fCuts[i];
+   }
+
+  fNCuts = in.fNCuts;
+  fPID  = in.fPID;
+  for (Int_t i = 0;i<fNCuts;i++)
+   {
+     fCuts[i] = (AliHbtBaseCut*)in.fCuts[i]->Clone();//create new object (clone) and rember pointer to it
+   }
+  return *this;
+}    
 
+/******************************************************************/
 AliHBTParticleCut::~AliHBTParticleCut()
 {
+  //dtor
   for (Int_t i = 0;i<fNCuts;i++)
    {
      delete fCuts[i];
@@ -39,10 +81,11 @@ AliHBTParticleCut::~AliHBTParticleCut()
 } 
 /******************************************************************/
 
-Bool_t AliHBTParticleCut::Pass(AliHBTParticle* p)
+Bool_t AliHBTParticleCut::Pass(AliHBTParticle* p) const
 {
 //method checks all the cuts that are set (in the list)
 //If any of the baseCuts rejects particle False(rejection) is returned
+
  if(!p) 
   {
     Warning("Pass()","No Pasaran! We never accept NULL pointers");
@@ -63,7 +106,7 @@ void AliHBTParticleCut::AddBasePartCut(AliHbtBaseCut* basecut)
   //adds the base pair cut (cut on one value)
  
    if (!basecut) return;
-   if( fNCuts == (fkgMaxCuts-1) )
+   if( fNCuts == (fgkMaxCuts-1) )
     {
       Warning("AddBasePartCut","Not enough place for another cut");
       return;
@@ -75,7 +118,7 @@ void AliHBTParticleCut::AddBasePartCut(AliHbtBaseCut* basecut)
 /******************************************************************/
 AliHbtBaseCut* AliHBTParticleCut::FindCut(AliHBTCutProperty property)
 {
+ //returns pointer to the cut checking the given property
  for (Int_t i = 0;i<fNCuts;i++)
   {
     if (fCuts[i]->GetProperty() == property) 
@@ -89,6 +132,7 @@ AliHbtBaseCut* AliHBTParticleCut::FindCut(AliHBTCutProperty property)
 
 void AliHBTParticleCut::SetMomentumRange(Double_t min, Double_t max)
 {
+  //Sets momentum range
   AliHBTMomentumCut* cut= (AliHBTMomentumCut*)FindCut(kHbtP);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTMomentumCut(min,max);
@@ -98,6 +142,7 @@ void AliHBTParticleCut::SetMomentumRange(Double_t min, Double_t max)
 
 void AliHBTParticleCut::SetPtRange(Double_t min, Double_t max)
 {
+  //name self descriptive
   AliHBTPtCut* cut= (AliHBTPtCut*)FindCut(kHbtPt);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTPtCut(min,max);
@@ -107,6 +152,7 @@ void AliHBTParticleCut::SetPtRange(Double_t min, Double_t max)
 
 void AliHBTParticleCut::SetEnergyRange(Double_t min, Double_t max)
 {
+  //name self descriptive
   AliHBTEnergyCut* cut= (AliHBTEnergyCut*)FindCut(kHbtE);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTEnergyCut(min,max);
@@ -116,6 +162,7 @@ void AliHBTParticleCut::SetEnergyRange(Double_t min, Double_t max)
 
 void AliHBTParticleCut::SetRapidityRange(Double_t min, Double_t max)
 {
+  //name self descriptive
   AliHbtBaseCut* cut = FindCut(kHbtRapidity);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTRapidityCut(min,max);
@@ -125,6 +172,7 @@ void AliHBTParticleCut::SetRapidityRange(Double_t min, Double_t max)
 
 void AliHBTParticleCut::SetPseudoRapidityRange(Double_t min, Double_t max)
 {
+  //name self descriptive
   AliHbtBaseCut* cut = FindCut(kHbtPseudoRapidity);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTPseudoRapidityCut(min,max);
@@ -134,6 +182,7 @@ void AliHBTParticleCut::SetPseudoRapidityRange(Double_t min, Double_t max)
 
 void AliHBTParticleCut::SetPxRange(Double_t min, Double_t max)
 {
+  //name self descriptive
   AliHbtBaseCut* cut = FindCut(kHbtPx);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTPxCut(min,max);
@@ -142,6 +191,7 @@ void AliHBTParticleCut::SetPxRange(Double_t min, Double_t max)
 
 void AliHBTParticleCut::SetPyRange(Double_t min, Double_t max)
 {  
+  //name self descriptive
   AliHbtBaseCut* cut = FindCut(kHbtPy);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTPyCut(min,max);
@@ -150,6 +200,7 @@ void AliHBTParticleCut::SetPyRange(Double_t min, Double_t max)
 
 void AliHBTParticleCut::SetPzRange(Double_t min, Double_t max)
 {
+  //name self descriptive
   AliHbtBaseCut* cut = FindCut(kHbtPz);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTPzCut(min,max);
@@ -158,6 +209,7 @@ void AliHBTParticleCut::SetPzRange(Double_t min, Double_t max)
 
 void AliHBTParticleCut::SetPhiRange(Double_t min, Double_t max)
 {
+  //name self descriptive
   AliHbtBaseCut* cut = FindCut(kHbtPhi);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTPhiCut(min,max);
@@ -166,6 +218,7 @@ void AliHBTParticleCut::SetPhiRange(Double_t min, Double_t max)
 
 void AliHBTParticleCut::SetThetaRange(Double_t min, Double_t max)
 {
+  //name self descriptive
   AliHbtBaseCut* cut = FindCut(kHbtTheta);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTThetaCut(min,max);
@@ -174,6 +227,7 @@ void AliHBTParticleCut::SetThetaRange(Double_t min, Double_t max)
 
 void AliHBTParticleCut::SetVxRange(Double_t min, Double_t max)
 {
+  //name self descriptive
   AliHbtBaseCut* cut = FindCut(kHbtVx);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTVxCut(min,max);
@@ -182,6 +236,7 @@ void AliHBTParticleCut::SetVxRange(Double_t min, Double_t max)
 
 void AliHBTParticleCut::SetVyRange(Double_t min, Double_t max)
 {
+  //name self descriptive
   AliHbtBaseCut* cut = FindCut(kHbtVy);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTVyCut(min,max);
@@ -190,6 +245,7 @@ void AliHBTParticleCut::SetVyRange(Double_t min, Double_t max)
 
 void AliHBTParticleCut::SetVzRange(Double_t min, Double_t max)
 {
+  //name self descriptive
   AliHbtBaseCut* cut = FindCut(kHbtVz);
   if(cut) cut->SetRange(min,max);
   else fCuts[fNCuts++] = new AliHBTVzCut(min,max);
@@ -198,7 +254,7 @@ void AliHBTParticleCut::SetVzRange(Double_t min, Double_t max)
 /******************************************************************/
 void AliHBTParticleCut::Streamer(TBuffer &b)
 {
-     // Stream all objects in the array to or from the I/O buffer.
+  // Stream all objects in the array to or from the I/O buffer.
 
    UInt_t R__s, R__c;
    if (b.IsReading()) 
@@ -228,9 +284,11 @@ void AliHBTParticleCut::Streamer(TBuffer &b)
      b.SetByteCount(R__c, kTRUE);
    }
 }
+/******************************************************************/
 
-void AliHBTParticleCut::Print(void)
+void AliHBTParticleCut::Print(void) const
 {
+  //prints all information about the cut to stdout
   cout<<"Printing AliHBTParticleCut, this = "<<this<<endl;
   cout<<"fPID  "<<fPID<<endl;
   cout<<"fNCuts  "<<fNCuts <<endl;
@@ -247,6 +305,7 @@ void AliHBTParticleCut::Print(void)
 ClassImp(AliHBTEmptyParticleCut)
 void AliHBTEmptyParticleCut::Streamer(TBuffer &b)
  {
+  //stramer
   AliHBTParticleCut::Streamer(b);
  }
 /******************************************************************/
@@ -258,13 +317,17 @@ void AliHBTEmptyParticleCut::Streamer(TBuffer &b)
 /******************************************************************/
 
 ClassImp(AliHbtBaseCut)
-void AliHbtBaseCut::Print(void)
+void AliHbtBaseCut::Print(void) const
 {
+  // prints the information anout the base cut to stdout
   cout<<"fMin="<<fMin <<", fMax=" <<fMax<<"    ";
   PrintProperty();
 }
-void AliHbtBaseCut::PrintProperty(void)
+/******************************************************************/
+
+void AliHbtBaseCut::PrintProperty(void) const
 {
+ //prints the property name 
  switch (fProperty)
   {
    case  kHbtP: 
@@ -324,7 +387,7 @@ AliHBTLogicalOperCut::AliHBTLogicalOperCut():
  fFirst(new AliHBTDummyBaseCut),
  fSecond(new AliHBTDummyBaseCut)
 {
-
+ //ctor
 }
 /******************************************************************/
 
@@ -333,6 +396,7 @@ AliHBTLogicalOperCut::AliHBTLogicalOperCut(AliHbtBaseCut* first, AliHbtBaseCut*
  fFirst((first)?(AliHbtBaseCut*)first->Clone():0x0),
  fSecond((second)?(AliHbtBaseCut*)second->Clone():0x0)
 {
+  //ctor
   if ( (fFirst && fSecond) == kFALSE) 
    {
      Fatal("AliHBTLogicalOperCut","One of parameters is NULL!");
@@ -342,14 +406,15 @@ AliHBTLogicalOperCut::AliHBTLogicalOperCut(AliHbtBaseCut* first, AliHbtBaseCut*
 
 AliHBTLogicalOperCut::~AliHBTLogicalOperCut()
 {
-//destructor
+  //destructor
   delete fFirst;
   delete fSecond;
 }
 /******************************************************************/
 
-Bool_t AliHBTLogicalOperCut::AliHBTDummyBaseCut::Pass(AliHBTParticle* /*part*/)
+Bool_t AliHBTLogicalOperCut::AliHBTDummyBaseCut::Pass(AliHBTParticle* /*part*/)  const
 {
+  //checks if particles passes properties defined by this cut
   Warning("Pass","You are using dummy base cut! Probobly some logical cut is not set up properly");
   return kFALSE;//accept
 }
@@ -385,7 +450,7 @@ void AliHBTLogicalOperCut::Streamer(TBuffer &b)
 /******************************************************************/
 ClassImp(AliHBTOrCut)
 
-Bool_t AliHBTOrCut::Pass(AliHBTParticle * p)
+Bool_t AliHBTOrCut::Pass(AliHBTParticle * p) const
 {
   //returns true when rejected 
   //AND operation is a little bit misleading but is correct
@@ -398,7 +463,7 @@ Bool_t AliHBTOrCut::Pass(AliHBTParticle * p)
 
 ClassImp(AliHBTAndCut)
 
-Bool_t AliHBTAndCut::Pass(AliHBTParticle * p)
+Bool_t AliHBTAndCut::Pass(AliHBTParticle * p)  const
 {
   //returns true when rejected 
   //OR operation is a little bit misleading but is correct