Coding conventions: comments added (G. Bruno)
authormasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 23 Apr 2008 16:09:33 +0000 (16:09 +0000)
committermasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 23 Apr 2008 16:09:33 +0000 (16:09 +0000)
ITS/AliITSTrackleterSPDEff.cxx
ITS/AliITSTrackleterSPDEff.h

index 9bd8e06..d90c0d5 100644 (file)
  * about the suitability of this software for any purpose. It is          *
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
-
-/* $Id$ */
-
 //____________________________________________________________________
-// 
+//
 // AliITSTrackleterSPDEff - find SPD chips efficiencies by using tracklets.
-// 
-// This class has been developed from AliITSMultReconstructor (see 
-// it for more details). It is the class for the Trackleter used to estimate 
-// SPD plane efficiency. 
+//
+// This class has been developed from AliITSMultReconstructor (see
+// it for more details). It is the class for the Trackleter used to estimate
+// SPD plane efficiency.
 // The trackleter prediction is built using the vertex and 1 cluster.
 //
-// 
+//
 //  Author :  Giuseppe Eugenio Bruno, based on the skeleton of Reconstruct method  provided by Tiziano Virgili
 //  email:    giuseppe.bruno@ba.infn.it
-//  
+//
 //____________________________________________________________________
 
+/* $Id$ */
+
 #include <TFile.h>
 #include <TParticle.h>
 #include <TSystem.h>
@@ -80,9 +79,7 @@ fhDPhiVsDZetaInterpAcc(0),
 fhetaClustersLay2(0),
 fhphiClustersLay2(0)
 {
-
-  // Method to check the SPD chips efficiencies by using tracklets 
-
+   // default constructor
 
   SetPhiWindowL1();
   SetZetaWindowL1();
@@ -866,24 +863,59 @@ return;
 }
 //______________________________________________________________________
 Int_t AliITSTrackleterSPDEff::GetPredictionPrimary(const UInt_t key) const {
+//
+// This method return the Data menmber fPredictionPrimary [1200].
+// You can call it only for MC events.
+// fPredictionPrimary[key] contains the number of tracklet predictions on the
+// given chip key built using  a cluster on the other layer produced (at least)
+// from a primary particle.
+// Key refers to the chip crossed by the prediction 
+//
+//
 if (!fMC) {CallWarningMC(); return 0;}
 if (key>=1200) {AliWarning("You asked for a non existing chip"); return -999;}
 return fPredictionPrimary[(Int_t)key];
 }
 //______________________________________________________________________
 Int_t AliITSTrackleterSPDEff::GetPredictionSecondary(const UInt_t key) const {
+//
+// This method return the Data menmber fPredictionSecondary [1200].
+// You can call it only for MC events.
+// fPredictionSecondary[key] contains the number of tracklet predictions on the
+// given chip key built using  a cluster on the other layer produced (only)
+// from a secondary particle
+// Key refers to the chip crossed by the prediction 
+//
+//
 if (!fMC) {CallWarningMC(); return 0;}
 if (key>=1200) {AliWarning("You asked for a non existing chip"); return -999;}
 return fPredictionSecondary[(Int_t)key];
 }
 //______________________________________________________________________
 Int_t AliITSTrackleterSPDEff::GetClusterPrimary(const UInt_t key) const {
+//
+// This method return the Data menmber fClusterPrimary [1200].
+// You can call it only for MC events.
+// fClusterPrimary[key] contains the number of tracklet predictions 
+// built using  a cluster on that layer produced (only)
+// from a primary particle
+// Key refers to the chip used to build the prediction
+//
+//
 if (!fMC) {CallWarningMC(); return 0;}
 if (key>=1200) {AliWarning("You asked for a non existing chip"); return -999;}
 return fClusterPrimary[(Int_t)key];
 }
 //______________________________________________________________________
 Int_t AliITSTrackleterSPDEff::GetClusterSecondary(const UInt_t key) const {
+//
+// This method return the Data menmber fClusterSecondary [1200].
+// You can call it only for MC events.
+// fClusterSecondary[key] contains the number of tracklet predictions
+// built using  a cluster on that layer produced (only)
+// from a secondary particle
+// Key refers to the chip used to build the prediction
+//
 if (!fMC) {CallWarningMC(); return 0;}
 if (key>=1200) {AliWarning("You asked for a non existing chip"); return -999;}
 return fClusterSecondary[(Int_t)key];
@@ -962,6 +994,15 @@ istream &operator>>(istream &is,AliITSTrackleterSPDEff &s){
 }
 //______________________________________________________________________
 void AliITSTrackleterSPDEff::SavePredictionMC(TString filename) const {
+//
+// This Method write into an asci file (do not know why binary does not work)
+// the used cuts and the statistics  of the MC related quantities
+// The method SetMC() has to be called before 
+// Input TString filename: name of file for output (it deletes already existing 
+// file)
+// Output: none
+//
+//
  if(!fMC) {CallWarningMC(); return;}
  ofstream out(filename.Data(),ios::out | ios::binary);
  out << *this;
@@ -970,6 +1011,14 @@ return;
 }
 //____________________________________________________________________
 void AliITSTrackleterSPDEff::ReadPredictionMC(TString filename) {
+//
+// This Method read from an asci file (do not know why binary does not work)
+// the cuts to be used and the statistics  of the MC related quantities
+// Input TString filename: name of input file for output 
+// The method SetMC() has to be called before
+// Output: none
+//
+//
  if(!fMC) {CallWarningMC(); return;}
  if( gSystem->AccessPathName( filename.Data() ) ) {
       AliError( Form( "file (%s) not found", filename.Data() ) );
@@ -983,8 +1032,10 @@ void AliITSTrackleterSPDEff::ReadPredictionMC(TString filename) {
 }
 //____________________________________________________________________
 Bool_t AliITSTrackleterSPDEff::SaveHists() {
-  // This method save the histograms on the output file
+  // This (private) method save the histograms on the output file
   // (only if fHistOn is TRUE).
+  // Also the histograms from the base class are saved through the 
+  // AliITSMultReconstructor::SaveHists() call
 
   if (!GetHistOn()) return kFALSE;
 
@@ -1010,6 +1061,7 @@ Bool_t AliITSTrackleterSPDEff::SaveHists() {
 Bool_t AliITSTrackleterSPDEff::WriteHistosToFile(TString filename, Option_t* option) {
   //
   // Saves the histograms into a tree and saves the trees into a file
+  // Also the histograms from the base class are saved 
   //
   if (!GetHistOn()) return kFALSE;
   if (filename.Data()=="") {
@@ -1025,6 +1077,12 @@ Bool_t AliITSTrackleterSPDEff::WriteHistosToFile(TString filename, Option_t* opt
 }
 //____________________________________________________________
 void AliITSTrackleterSPDEff::BookHistos() {
+//
+// This method books addtitional histograms 
+// w.r.t. those of the base class.
+// In particular, the differences of cluster coordinate between the two SPD
+// layers are computed in the interpolation phase
+//
   if (! GetHistOn()) { AliInfo("Call SetHistOn(kTRUE) first"); return;}
   fhClustersDPhiInterpAcc   = new TH1F("dphiaccInterp",  "dphi Interpolation phase",  100,0.,0.1);
   fhClustersDPhiInterpAcc->SetDirectory(0);
@@ -1058,6 +1116,10 @@ void AliITSTrackleterSPDEff::BookHistos() {
 }
 //____________________________________________________________
 void AliITSTrackleterSPDEff::DeleteHistos() {
+//
+// Private method to delete Histograms from memory 
+// it is called. e.g., by the destructor.
+//
     if(fhClustersDPhiInterpAcc) {delete fhClustersDPhiInterpAcc; fhClustersDPhiInterpAcc=0;}
     if(fhClustersDThetaInterpAcc) {delete fhClustersDThetaInterpAcc; fhClustersDThetaInterpAcc=0;}
     if(fhClustersDZetaInterpAcc) {delete fhClustersDZetaInterpAcc; fhClustersDZetaInterpAcc=0;}
index 05c7c11..73d853b 100644 (file)
 //  
 //____________________________________________________________________
 
+class AliStack;
 #include "AliITSMultReconstructor.h"
 #include "AliITSPlaneEffSPD.h"
 
-class AliStack;
-
 class AliITSTrackleterSPDEff : public AliITSMultReconstructor 
 {
 public:
   AliITSTrackleterSPDEff();
   virtual ~AliITSTrackleterSPDEff();
-
+  // Main method to perform the trackleter and the SPD efficiency evaluation
   void Reconstruct(TTree* tree, Float_t* vtx, Float_t* vtxRes, AliStack* pStack=0x0);
 
-  void SetPhiWindowL1(Float_t w=0.08) {fPhiWindowL1=w;}
-  void SetZetaWindowL1(Float_t w=1.) {fZetaWindowL1=w;}
-  void SetOnlyOneTrackletPerC1(Bool_t b = kTRUE) {fOnlyOneTrackletPerC1 = b;}
+  void SetPhiWindowL1(Float_t w=0.08) {fPhiWindowL1=w;}  // method to set the cuts in the interpolation
+  void SetZetaWindowL1(Float_t w=1.) {fZetaWindowL1=w;}  // phase; use method of the base class for extrap.
+  void SetOnlyOneTrackletPerC1(Bool_t b = kTRUE) {fOnlyOneTrackletPerC1 = b;} // as in the base class but 
+                                                                             // for the inner layer
   
-  AliITSPlaneEffSPD* GetPlaneEff() const {return fPlaneEffSPD;}
+  AliITSPlaneEffSPD* GetPlaneEff() const {return fPlaneEffSPD;}  // return a pointer to the AliITSPlaneEffSPD
   
-  void SetMC(Bool_t mc=kTRUE) {fMC=mc; InitPredictionMC(); return;}
-  Bool_t GetMC() const {return fMC;}
-  void SetUseOnlyPrimaryForPred(Bool_t flag=kTRUE) {CallWarningMC(); fUseOnlyPrimaryForPred = flag; }
+  void SetMC(Bool_t mc=kTRUE) {fMC=mc; InitPredictionMC(); return;}  // switch on access to MC true 
+  Bool_t GetMC() const {return fMC;}  // check the access to MC true
+  // Only for MC: use only "primary" particles (according to PrimaryTrackChecker) for the tracklet prediction
+  void SetUseOnlyPrimaryForPred(Bool_t flag=kTRUE) {CallWarningMC(); fUseOnlyPrimaryForPred = flag; } 
+  // Only for MC: use only "secondary" particles (according to PrimaryTrackChecker) for the tracklet prediction
   void SetUseOnlySecondaryForPred(Bool_t flag=kTRUE) {CallWarningMC(); fUseOnlySecondaryForPred = flag;}
+  // Only for MC: associate a cluster to the tracklet prediction if  from the same particle
   void SetUseOnlySameParticle(Bool_t flag=kTRUE) {CallWarningMC(); fUseOnlySameParticle = flag;}
+  // Only for MC: associate a cluster to the tracklet prediction if  from different particles
   void SetUseOnlyDifferentParticle(Bool_t flag=kTRUE) {CallWarningMC(); fUseOnlyDifferentParticle = flag;}
+  //  Only for MC: re-define "primary" a particle if it is also "stable" (according to definition in method DecayingTrackChecker)
   void SetUseOnlyStableParticle(Bool_t flag=kTRUE) {CallWarningMC(); fUseOnlyStableParticle = flag;}
+  // only for MC: Getters relative to the above setters
   Bool_t GetUseOnlyPrimaryForPred() const {CallWarningMC(); return fUseOnlyPrimaryForPred; }
   Bool_t GetUseOnlySecondaryForPred() const {CallWarningMC(); return fUseOnlySecondaryForPred;}
   Bool_t GetUseOnlySameParticle() const {CallWarningMC(); return fUseOnlySameParticle;}
   Bool_t GetUseOnlyDifferentParticle() const {CallWarningMC(); return fUseOnlyDifferentParticle;}
   Bool_t GetUseOnlyStableParticle() const {CallWarningMC(); return fUseOnlyStableParticle;}
+  // Getters for the data members related to MC true statisitcs (see below)
   Int_t GetPredictionPrimary(const UInt_t key) const;
   Int_t GetPredictionSecondary(const UInt_t key) const;
   Int_t GetClusterPrimary(const UInt_t key) const;
@@ -64,6 +71,7 @@ public:
         {return GetClusterPrimary(fPlaneEffSPD->GetKey(mod,chip));};
   Int_t GetClusterSecondary(const UInt_t mod, const UInt_t chip) const
         {return GetClusterSecondary(fPlaneEffSPD->GetKey(mod,chip));};
+  // methods to write/reas cuts and MC statistics into/from file
   void SavePredictionMC(TString filename="TrackletsMCpred.txt") const;
   void ReadPredictionMC(TString filename="TrackletsMCpred.txt");
   // Print some class info in ascii form to stream (cut values and MC statistics)
@@ -71,12 +79,14 @@ public:
   // Read some class info in ascii form from stream (cut values and MC statistics)
   virtual void ReadAscii(istream *is);
   Bool_t GetHistOn() const {return fHistOn;}; // return status of histograms
+  // write histograms into a root file on disk
   Bool_t WriteHistosToFile(TString filename="TrackleterSPDHistos.root",Option_t* option = "RECREATE");
+  // switch on/off the extra histograms
   void SetHistOn(Bool_t his=kTRUE) {AliITSMultReconstructor::SetHistOn(his); 
          if(GetHistOn()) {DeleteHistos(); BookHistos();} else DeleteHistos(); return;}
 
 protected:
-  AliITSTrackleterSPDEff(const AliITSTrackleterSPDEff& mr);
+  AliITSTrackleterSPDEff(const AliITSTrackleterSPDEff& mr); // protected method: no copy allowed from outside
   AliITSTrackleterSPDEff& operator=(const AliITSTrackleterSPDEff& mr);
 
   Bool_t*       fAssociationFlag1;    // flag for the associations (Layer 1)