//*-- Author: Dmitri Peressounko (SUBATECH & RRC Kurchatov Institute)
//////////////////////////////////////////////////////////////////////////////
+
// --- ROOT system ---
#include "TFile.h"
#include "TH1.h"
-#include "TPad.h"
#include "TH2.h"
#include "TH2.h"
#include "TParticle.h"
#include "TClonesArray.h"
#include "TTree.h"
#include "TMath.h"
-#include "TCanvas.h"
-#include "TStyle.h"
// --- Standard library ---
-#include <iostream.h>
#include <iomanip.h>
-#include <stdio.h>
// --- AliRoot header files ---
#include "AliRun.h"
#include "AliPHOSv1.h"
#include "AliPHOSAnalyze.h"
-#include "AliPHOSClusterizerv1.h"
-#include "AliPHOSTrackSegmentMakerv1.h"
-#include "AliPHOSPIDv1.h"
-#include "AliPHOSReconstructioner.h"
#include "AliPHOSDigit.h"
-#include "AliPHOSDigitizer.h"
#include "AliPHOSSDigitizer.h"
#include "AliPHOSTrackSegment.h"
#include "AliPHOSRecParticle.h"
#include "AliPHOSIndexToObject.h"
-#include "AliPHOSHit.h"
#include "AliPHOSCpvRecPoint.h"
#include "AliPHOSPpsdRecPoint.h"
+
ClassImp(AliPHOSAnalyze)
//____________________________________________________________________________
fGeom->AbsToRelNumbering(sdigit->GetId(), relid) ;
Float_t x,z ;
fGeom->RelPosInModule(relid,x,z) ;
- Float_t e = fObjGetter->GimeSDigitizer()->Calibrate(sdigit->GetAmp()) ;
+ Float_t e = fObjGetter->GimeSDigitizer()->Calibrate(sdigit->GetAmp()) ;
if(relid[0]==Nmod){
if(relid[1]==0) //EMC
sdigitOccupancy->Fill(x,z,e) ;
class AliPHOSv1 ;
class AliPHOSGeometry ;
-class AliPHOSPID ;
class AliPHOSIndexToObject ;
class AliPHOSAnalyze : public TObject {
void SetEnergyCorrection(const Float_t ecor){fCorrection = ecor ;}
AliPHOSAnalyze & operator = (const AliPHOSAnalyze & rvalue) {
- // assignement operator requested by coding convention
- // but not needed
+ // assignement operator requested by coding convention but not needed
abort() ;
return *this ;
}
- private:
+private:
+
Float_t CorrectedEnergy(const Float_t ReconstEnergy)const
{return ReconstEnergy * fCorrection;}
//Converts reconstructed energy (energy of the EMCRecPoint) to the energy of primary
//(see Energy Resolution function). However, if one change parameters of reconstruction
//or geometry, one have to recalculate coefficient!
- private:
+private:
- Float_t fCorrection ; //! Conversion coefficient between True and Reconstructed energies
- Int_t fEvt ; //! the evt number being processed
+ Float_t fCorrection ; //! Conversion coefficient between True and Reconstructed energies
+ Int_t fEvt ; //! the evt number being processed
AliPHOSGeometry * fGeom ; //! the PHOS Geometry object
AliPHOSIndexToObject * fObjGetter ; //! provides methods to retrieve objects from their index in a list
AliPHOSv1 * fPHOS ; //! the PHOS object from the root file
/*
$Log$
+ Revision 1.1 2000/11/03 16:27:47 schutz
+ CPV base geometry class to correct previous name-convetion rule violation
+
*/
//_________________________________________________________________________
// --- Standard library ---
-#include <iostream.h>
-
// --- AliRoot header files ---
#include "AliPHOSCPVBaseGeometry.h"
// Return common for PPSD and CPV geometrical parameters
- virtual Float_t GetCPVBoxSize(Int_t index) = 0 ;
+ virtual Float_t GetCPVBoxSize(Int_t index) = 0 ;
// Return PPSD geometrical parameters
- virtual Float_t GetAnodeThickness(void) = 0 ;
- virtual Float_t GetAvalancheGap(void) = 0 ;
- virtual Float_t GetCathodeThickness(void) = 0 ;
- virtual Float_t GetCompositeThickness(void) = 0 ;
- virtual Float_t GetConversionGap(void) = 0 ;
- virtual Float_t GetLeadConverterThickness(void) = 0 ;
- virtual Float_t GetLeadToMicro2Gap(void) = 0 ;
- virtual Float_t GetLidThickness(void) = 0 ;
- virtual Float_t GetMicromegas1Thickness(void) = 0 ;
- virtual Float_t GetMicromegas2Thickness(void) = 0 ;
- virtual Float_t GetMicromegasWallThickness(void) = 0 ;
- virtual Float_t GetMicro1ToLeadGap(void) = 0 ;
- virtual Int_t GetNumberOfPadsPhi(void) = 0 ;
- virtual Int_t GetNumberOfPadsZ(void) = 0 ;
- virtual Int_t GetNumberOfModulesPhi(void) = 0 ;
- virtual Int_t GetNumberOfModulesZ(void) = 0 ;
- virtual Float_t GetPCThickness(void) = 0 ;
- virtual Float_t GetPhiDisplacement(void) = 0 ;
- virtual Float_t GetPPSDModuleSize(Int_t index) = 0 ;
- virtual Float_t GetZDisplacement(void) = 0 ;
+ virtual Float_t GetAnodeThickness(void) = 0 ;
+ virtual Float_t GetAvalancheGap(void) = 0 ;
+ virtual Float_t GetCathodeThickness(void) = 0 ;
+ virtual Float_t GetCompositeThickness(void) = 0 ;
+ virtual Float_t GetConversionGap(void) = 0 ;
+ virtual Float_t GetLeadConverterThickness(void) = 0 ;
+ virtual Float_t GetLeadToMicro2Gap(void) = 0 ;
+ virtual Float_t GetLidThickness(void) = 0 ;
+ virtual Float_t GetMicromegas1Thickness(void) = 0 ;
+ virtual Float_t GetMicromegas2Thickness(void) = 0 ;
+ virtual Float_t GetMicromegasWallThickness(void) = 0 ;
+ virtual Float_t GetMicro1ToLeadGap(void) = 0 ;
+ virtual Int_t GetNumberOfPadsPhi(void) = 0 ;
+ virtual Int_t GetNumberOfPadsZ(void) = 0 ;
+ virtual Int_t GetNumberOfModulesPhi(void) = 0 ;
+ virtual Int_t GetNumberOfModulesZ(void) = 0 ;
+ virtual Float_t GetPCThickness(void) = 0 ;
+ virtual Float_t GetPhiDisplacement(void) = 0 ;
+ virtual Float_t GetPPSDModuleSize(Int_t index) = 0 ;
+ virtual Float_t GetZDisplacement(void) = 0 ;
virtual void SetLeadConverterThickness(Float_t x) = 0 ;
// Return CPV geometrical parameters
- virtual Int_t GetNumberOfCPVLayers(void) = 0 ;
- virtual Bool_t IsLeadConverterExists(void) = 0 ;
- virtual Float_t GetCPVActiveSize(Int_t index) = 0 ;
- virtual Int_t GetNumberOfCPVChipsPhi(void) = 0 ;
- virtual Int_t GetNumberOfCPVChipsZ(void) = 0 ;
- virtual Float_t GetGassiplexChipSize(Int_t index) = 0 ;
- virtual Float_t GetCPVGasThickness(void) = 0 ;
- virtual Float_t GetCPVTextoliteThickness(void) = 0 ;
- virtual Float_t GetCPVCuNiFoilThickness(void) = 0 ;
- virtual Float_t GetFTPosition(Int_t index) = 0 ;
- virtual Float_t GetCPVFrameSize(Int_t index) = 0 ;
+ virtual Int_t GetNumberOfCPVLayers(void) = 0 ;
+ virtual Bool_t IsLeadConverterExists(void) = 0 ;
+ virtual Float_t GetCPVActiveSize(Int_t index) = 0 ;
+ virtual Int_t GetNumberOfCPVChipsPhi(void) = 0 ;
+ virtual Int_t GetNumberOfCPVChipsZ(void) = 0 ;
+ virtual Float_t GetGassiplexChipSize(Int_t index)= 0 ;
+ virtual Float_t GetCPVGasThickness(void) = 0 ;
+ virtual Float_t GetCPVTextoliteThickness(void) = 0 ;
+ virtual Float_t GetCPVCuNiFoilThickness(void) = 0 ;
+ virtual Float_t GetFTPosition(Int_t index) = 0 ;
+ virtual Float_t GetCPVFrameSize(Int_t index) = 0 ;
ClassDef(AliPHOSCPVBaseGeometry,1) // CPV base geometry class
virtual Int_t GetNumberOfPadsZ(void) { AssertPPSD("GetNumberOfPadsZ"); return 0; }
virtual Int_t GetNumberOfModulesPhi(void) { AssertPPSD("GetNumberOfModulesPhi"); return 0; }
virtual Int_t GetNumberOfModulesZ(void) { AssertPPSD("GetNumberOfModulesZ"); return 0; }
- virtual void SetLeadConverterThickness(Float_t x) { AssertPPSD("SetLeadConverterThickness"); }
+ virtual void SetLeadConverterThickness(Float_t x) { AssertPPSD("SetLeadConverterThickness"); }
private:
//_________________________________________________________________________
// Base class for the clusterization algorithm (pure abstract)
-//
+//*--
//*-- Author: Yves Schutz SUBATECH
//////////////////////////////////////////////////////////////////////////////
//_________________________________________________________________________
// Implementation version 1 of the clusterization algorithm
+// Performs clusterization (collects neighbouring active cells) and
+// unfolding of the clusters with several local maxima.
+// results are stored in TreeR#, branches PHOSEmcRP (EMC recPoints),
+// PHOSCpvRP (CPV RecPoints) and AliPHOSClusterizer
//
//*-- Author: Yves Schutz (SUBATECH)
Int_t AreNeighbours(AliPHOSDigit * d1, AliPHOSDigit * d2)const ;
// Checks if digits are in neighbour cells
- virtual void GetNumberOfClustersFound(int * numb ){ numb[0] = fNumberOfEmcClusters ;
- numb[1] = fNumberOfCpvClusters ; }
+ virtual void GetNumberOfClustersFound(int * numb )const{ numb[0] = fNumberOfEmcClusters ;
+ numb[1] = fNumberOfCpvClusters ; }
virtual Float_t GetEmcClusteringThreshold()const{ return fEmcClusteringThreshold;}
virtual Float_t GetEmcLocalMaxCut()const { return fEmcLocMaxCut;}
private:
virtual Float_t Calibrate(Int_t amp)const { return (amp-fPedestal)/fSlope ;} // Tranforms Amp to energy
Bool_t FindFit(AliPHOSEmcRecPoint * emcRP, int * MaxAt, Float_t * maxAtEnergy,
- Int_t NPar, Float_t * FitParametres) ; //Used in UnfoldClusters, calls TMinuit
+ Int_t NPar, Float_t * FitParametres) const; //Used in UnfoldClusters, calls TMinuit
void Init() ;
virtual Bool_t IsInEmc (AliPHOSDigit * digit)const ; // Tells if id digit is in EMC
Int_t fEvent ; // Number of event currently processed
Bool_t fToUnfold ; // To perform unfolding
- Bool_t fIsInitialized ;
+ Bool_t fIsInitialized ; // kTRUE if clisterizer is initialized
AliPHOSGeometry * fGeom ; // !pointer to PHOS geometry
}
//______________________________________________________________________________
-void AliPHOSCpvRecPoint::ExecuteEvent(Int_t event, Int_t px, Int_t py)
+void AliPHOSCpvRecPoint::ExecuteEvent(Int_t event, Int_t px, Int_t py) const
{
// // Execute action corresponding to one event
// // This member function is called when a AliPHOSRecPoint is clicked with the locator
void EvalLocalPosition(Float_t logWeight,TClonesArray * digits ) ;
void EvalClusterLengths(TClonesArray * digits) ;
- virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py) ;
+ virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py) const ;
- void GetClusterLengths(Int_t &lengX, Int_t &lengZ){lengX = fLengX ;lengZ = fLengZ ;}
+ void GetClusterLengths(Int_t &lengX, Int_t &lengZ) const {lengX = fLengX ;lengZ = fLengZ ;}
Bool_t IsEmc(void) const {return kFALSE ; } // tells that this is not a EMC
Bool_t IsCPV(void) const {return (fPHOSMod <= ((AliPHOSGeometry*) fGeom)->GetNCPVModules()) ; }
// true if the recpoint is in CPV
//_________________________________________________________________________
// Task Class for making SDigits in PHOS
+// Class performs digitization of Summable digits (in the PHOS case this is just
+// sum of contributions of all primary particles into given cell).
+// In addition it performs mixing of summable digits from different events.
//
//*-- Author: Dmitri Peressounko(SUBATECH & KI)
public:
AliPHOSDigitizer() ; // ctor
AliPHOSDigitizer(const char *headerFile,const char * sDigitsBranchTitle = 0) ;
+ AliPHOSDigitizer(const AliPHOSDigitizer & dtizer) {( (AliPHOSDigitizer &)dtizer ).Copy(*this) ;} // cpy ctor
virtual ~AliPHOSDigitizer() ;
void Digitize(Option_t *option); // Make Digits from SDigits stored in fSDigits
Float_t GetSlope() const { return fSlope; }
char * GetDigitsBranch ()const { return (char*)fDigitsTitle.Data() ;}
char * GetSDigitsBranch()const { return (char*)((TObjString*)fSDigitsTitles->At(0))->GetString().Data() ;}
- TClonesArray * GetHeadersFiles(){ return fHeaderFiles ;}
- TArrayI* GetCurrentEvents() { return fIevent ;}
+ TClonesArray * GetHeadersFiles() const { return fHeaderFiles ;}
+ TArrayI * GetCurrentEvents()const { return fIevent ;}
void MixWith(char* HeaderFile, char* SDigitsTitle =0) ; // Add another one file to mix
virtual void Print(Option_t* option)const ;
void SetDigitsBranch (const char* file) ;
void SetSDigitsBranch(const char* file) ;
+ AliPHOSDigitizer & operator = (const AliPHOSDigitizer & rvalue) {
+ // assignement operator requested by coding convention but not needed
+ abort() ;
+ return *this ;
+ }
+
private:
Bool_t Combinator() ; // makes all desirable combination sig+Bg
void Init();
TClonesArray * fDigits ; // ! Final list of digits
AliPHOSSDigitizer * fSDigitizer ; // ! SDigitizer to extarct some sdigitizing parameters
Int_t fNinputs ; // Number of input files
- Bool_t fInitialized ; //
+ Bool_t fInitialized ; // kTRUE if AliPHOSDigitizer is initialized
TArrayI * fIevent ; // events to read at the next ReadSDigits() call
TArrayI * fIeventMax ; // Maximal number of events in each input file
//_________________________________________________________________________
// RecPoint implementation for PHOS-EMC
// An EmcRecPoint is a cluster of digits
-//
+//*--
//*-- Author: Dmitri Peressounko (RRC KI & SUBATECH)
}
//______________________________________________________________________________
-void AliPHOSEmcRecPoint::ExecuteEvent(Int_t event, Int_t px, Int_t py)
+void AliPHOSEmcRecPoint::ExecuteEvent(Int_t event, Int_t px, Int_t py) const
{
// Commented by Dmitri Peressounko: there is no possibility to ensure,
// that AliPHOSIndexToObject keeps the correct information.
//____________________________________________________________________________
void AliPHOSEmcRecPoint::EvalAll(Float_t logWeight, TClonesArray * digits )
{
- // calculates the various parameters characterizing the RecPoint
+ // Evaluates all shower parameters
+
AliPHOSRecPoint::EvalAll(logWeight,digits) ;
EvalLocalPosition(logWeight, digits) ;
EvalElipsAxis(logWeight, digits) ;
virtual void EvalLocalPosition(Float_t logWeight,TClonesArray * digits) ;// computes the position in the PHOS module
virtual void EvalDispersion(Float_t logWeight,TClonesArray * digits) ; // computes the dispersion of the shower
virtual void EvalElipsAxis(Float_t logWeight, TClonesArray * digits ); // computes the axis of shower ellipsoide
- virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py) ;
+ virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py) const;
Float_t GetCoreEnergy()const {return fCoreEnergy ;}
virtual Float_t GetDispersion()const {return fDispersion ;}
void Print(Option_t * opt = "void") ;
AliPHOSEmcRecPoint & operator = (const AliPHOSEmcRecPoint & rvalue) {
- // assignement operator requested by coding convention
- // but not needed
+ // assignement operator requested by coding convention but not needed
assert(0==1) ;
return *this ;
}
virtual Bool_t AreNeighbours(AliPHOSDigit * digit1, AliPHOSDigit * digit2 ) const ;
- Float_t fCoreEnergy ;
- Float_t fLambda[2] ; //
- Float_t fDispersion ;
- Float_t *fEnergyList ; //[fMulDigit] energy of digits
+ Float_t fCoreEnergy ; // energy in a shower core
+ Float_t fLambda[2] ; // shower ellipse axes
+ Float_t fDispersion ; // shower dispersion
+ Float_t *fEnergyList ; //[fMulDigit] energy of digits
ClassDef(AliPHOSEmcRecPoint,1) // EMC RecPoint (cluster)
//_________________________________________________________________________
// Hits class for PHOS
// A hit in PHOS is the sum of all hits in a single crystal
-//
+//*--
//*-- Author: Maxime Volkov (RRC KI) & Yves Schutz (SUBATECH)
// --- ROOT system ---
Int_t GimeNDigits()
{if(fDigits) return fDigits->GetEntriesFast();
return 0 ;}
- TParticle * GimePrimary(Int_t index) ;
+ TParticle * GimePrimary(Int_t index) const ;
Int_t GimeNPrimaries()const { return fNPrimaries; }
AliPHOSRecParticle * GimeRecParticle(Int_t index)
{ if(fRecParticles) return (AliPHOSRecParticle*)fRecParticles->At(index);
// --- Standard library ---
#include <iostream.h>
-#include <stdlib.h>
// --- AliRoot header files ---
private:
- TString fHeaderFileName ;
- TString fTSTitle;
- TString fRecPointsTitle ;
- TString fRecparticlesTitle ;
+ TString fHeaderFileName ; // file name with event header
+ TString fTSTitle; // branch name with track segments
+ TString fRecPointsTitle ; // branch name with rec points
+ TString fRecparticlesTitle ; // branch name with rec particles
- TString fIDOptions ;
+ TString fIDOptions ; // PID option
- Int_t fNEvent ;
- TObjArray * fEmcRecPoints ; // ! initial EMC RecPoints
- TObjArray * fCpvRecPoints ; // ! initial CPV RecPoints
- TClonesArray * fTrackSegments; // ! initial list of TrackSegments
- TClonesArray * fRecParticles ; // ! output
+ Int_t fNEvent ; // current event number
+ TObjArray * fEmcRecPoints ; // ! initial EMC RecPoints
+ TObjArray * fCpvRecPoints ; // ! initial CPV RecPoints
+ TClonesArray * fTrackSegments; // ! initial list of TrackSegments
+ TClonesArray * fRecParticles ; // ! output
- AliPHOSClusterizer * fClusterizer ; // !
- AliPHOSTrackSegmentMaker * fTSMaker ; // !
-
- AliPHOSGeometry * fGeom ; // !pointer to PHOS geometry
- TFormula * fFormula ; // formula to define cut on the shouer elips axis
- Float_t fDispersion ; // dispersion cut
- Float_t fCpvEmcDistance ;
-
- Bool_t fIsInitialized ;
+ AliPHOSClusterizer * fClusterizer ; // !
+ AliPHOSTrackSegmentMaker * fTSMaker ; // !
+ AliPHOSGeometry * fGeom ; // !pointer to PHOS geometry
+ TFormula * fFormula ; // formula to define cut on the shouer elips axis
+ Float_t fDispersion ; // dispersion cut
+ Float_t fCpvEmcDistance ; // Max EMC-CPV distance
+ Bool_t fIsInitialized ; // kTRUE is inifialized
ClassDef( AliPHOSPIDv1,1) // Particle identifier implementation version 1
virtual Float_t GetCPVBoxSize(Int_t index) { return fPPSDBoxSize[index] ; }
virtual Float_t GetPPSDModuleSize(Int_t index) { return fPPSDModuleSize[index] ; }
virtual Float_t GetZDisplacement(void) { return fZDisplacement ; }
- virtual void SetLeadConverterThickness(Float_t x) { fLeadConverterThickness = x; }
+ virtual void SetLeadConverterThickness(Float_t x) { fLeadConverterThickness = x; }
// CPV functions cannot be used for PPSD
// --- Standard library ---
-#include <assert.h>
// --- AliRoot header files ---
#include "AliPHOSRecParticle.h"
-#include "TPad.h"
ClassImp(AliPHOSRecParticle)
// --- ROOT system ---
-#include "TParticle.h"
-#include "TVector3.h"
-
// --- Standard library ---
// --- AliRoot header files ---
class AliPHOSRecParticle : public AliPHOSFastRecParticle {
-public:
+ public:
AliPHOSRecParticle() { }
AliPHOSRecParticle(const AliPHOSRecParticle & rp) ; // ctor
virtual ~AliPHOSRecParticle(){ }
- Int_t GetPHOSTSIndex(){ return fPHOSTrackSegment ; }
+ Int_t GetPHOSTSIndex()const { return fPHOSTrackSegment ; }
void SetTraskSegment(Int_t index){fPHOSTrackSegment = index; }
typedef TClonesArray RecParticlesList ;
// ctor
fGeom = (AliPHOSGeometry*) AliPHOSGeometry::GetInstance() ;
- fMaxTrack = 50 ;
+ fMaxTrack = 200 ;
fPHOSMod = 0;
}
return kTRUE ;
}
virtual void Paint(Option_t * option="");
- virtual void Print(Option_t * opt = "void") {
+ virtual void Print(Option_t * opt = "void") const {
// Print prototype
}
AliPHOSRecPoint & operator = (const AliPHOSRecPoint & ) {
- // assignement operator requested by coding convention
- // but not needed
+ // assignement operator requested by coding convention but not needed
assert(0==1) ;
return *this ;
}
//____________________________________________________________________________
AliPHOSReconstructioner::~AliPHOSReconstructioner()
{
- // dtor
+ // Delete data members if any
+
if(fSDigitizer)
delete fSDigitizer ;
delete fPID ;
}
//____________________________________________________________________________
-void AliPHOSReconstructioner::SetBranchTitle(const char* branch, const char * title){
+void AliPHOSReconstructioner::SetBranchTitle(const char* branch, const char * title)
+{
//Diverge correcpoinding branch to the file "title"
if(strcmp(branch,"SDigits") == 0){
delete moduleName;
}
//____________________________________________________________________________
-void AliPHOSReconstructioner::Print(Option_t * option)const
-{
- // Print the parameters of the reconstructioner
+
+void AliPHOSReconstructioner::Print(Option_t * option)const {
+ // Print reconstructioner data
+
cout << "-----------------AliPHOSReconstructioner---------------" << endl ;
cout << " Reconstruction of the header file " <<fHeaderFileName.Data() << endl ;
cout << " with the following modules: " << endl ;
// --- ROOT system ---
-#include <stdlib.h>
#include "TTask.h"
class AliPHOSDigitizer ;
class AliPHOSClusterizer ;
virtual void Exec(Option_t * option) ;
- AliPHOSDigitizer * GetDigitizer() { return fDigitizer ; }
- AliPHOSClusterizer * GetClusterizer(){ return fClusterizer ; }
- AliPHOSPID * GetPID() { return fPID; }
- AliPHOSTrackSegmentMaker * GetTSMaker() { return fTSMaker ; }
- AliPHOSSDigitizer * GetSDigitizer() { return fSDigitizer ; }
+ AliPHOSDigitizer * GetDigitizer() const { return fDigitizer ; }
+ AliPHOSClusterizer * GetClusterizer()const { return fClusterizer ; }
+ AliPHOSPID * GetPID() const { return fPID; }
+ AliPHOSTrackSegmentMaker * GetTSMaker() const { return fTSMaker ; }
+ AliPHOSSDigitizer * GetSDigitizer() const { return fSDigitizer ; }
void Print(Option_t * option)const ;
TString fSDigitsBranch ; // -"- SDigits -"-
- AliPHOSDigitizer * fDigitizer ;
- AliPHOSClusterizer * fClusterizer ;
- AliPHOSPID * fPID ;
- AliPHOSTrackSegmentMaker * fTSMaker ;
- AliPHOSSDigitizer * fSDigitizer ;
+ AliPHOSDigitizer * fDigitizer ; // Pointer to AliPHOSDigitizer
+ AliPHOSClusterizer * fClusterizer ; // Pointer to AliPHOSClusterizer
+ AliPHOSPID * fPID ; // Pointer to AliPHOSPID
+ AliPHOSTrackSegmentMaker * fTSMaker ; // Pointer to AliPHOSTrackSegmentMaker
+ AliPHOSSDigitizer * fSDigitizer ; // Pointer to AliPHOSSDigitizer
- Bool_t fIsInitialized ;
+ Bool_t fIsInitialized ; // kTRUE if reconstructioner is initialized
ClassDef(AliPHOSReconstructioner,1) // Reconstruction algorithm class (Base Class)
//_________________________________________________________________________
// Task Class for making SDigits in PHOS
-//
+// A Summable Digits is the sum of all hits originating
+// from one primary in one active cell
+//*--
//*-- Author: Dmitri Peressounko(SUBATECH & KI)
Float_t fPrimThreshold ; // To store primari if Elos > threshold
TString fSDigitsTitle ; // title of SDigits branch
TString fHeadersFile ; //input file
- Bool_t fIsInitialized ;
+ Bool_t fIsInitialized ; // kTRUE if SDigitizer is initialized
TClonesArray * fSDigits ; //! list of SDigits
TClonesArray * fHits ; //!
}
//____________________________________________________________________________
-void AliPHOSTrackSegment::Print(Option_t * opt)
+void AliPHOSTrackSegment::Print(Option_t * opt) const
{
// Print all information on this track Segment
void Copy(TObject & obj) ;
- Int_t GetIndexInList() const { return fIndexInList ; }
- Int_t GetEmcIndex()const { return fEmcRecPoint ; }
- Int_t GetPpsdIndex()const{ return fPpsdLowRecPoint;}
- Int_t GetCpvIndex()const { return fPpsdUpRecPoint; }
+ Int_t GetIndexInList() const { return fIndexInList ; }
+ Int_t GetEmcIndex() const { return fEmcRecPoint ; }
+ Int_t GetPpsdIndex() const { return fPpsdLowRecPoint;}
+ Int_t GetCpvIndex() const { return fPpsdUpRecPoint; }
- virtual void Print(Option_t * option) ;
+ virtual void Print(Option_t * option) const;
void SetIndexInList(Int_t val){ fIndexInList = val ; }
void SetCpvRecPoint(AliPHOSRecPoint * PpsdUpRecPoint ); //sets PPSD up Rec Point
// Algorithm Base class to construct PHOS track segments
// Associates EMC and PPSD clusters
// Unfolds the EMC cluster
-//
+//*--
//*-- Author: Dmitri Peressounko (RRC Ki & SUBATECH)
// --- ROOT system ---
-#include "TFile.h"
-#include "TROOT.h"
-
// --- Standard library ---
// --- AliRoot header files ---
-#include "AliRun.h"
#include "AliPHOSTrackSegmentMaker.h"
-#include "AliPHOS.h"
-#include "AliPHOSGeometry.h"
ClassImp( AliPHOSTrackSegmentMaker)
virtual void SetTrackSegmentsBranch(const char * title) = 0 ;
virtual void WriteTrackSegments() = 0 ;
- protected:
-
ClassDef( AliPHOSTrackSegmentMaker,1) // Algorithm class to make PHOS track segments (Base Class)
};
#include "AliPHOSCpvRecPoint.h"
#include "AliPHOSPpsdRecPoint.h"
#include "AliPHOSLink.h"
-#include "AliPHOSv0.h"
+#include "AliPHOS.h"
#include "AliRun.h"
ClassImp( AliPHOSTrackSegmentMakerv1)
}
//____________________________________________________________________________
-Float_t AliPHOSTrackSegmentMakerv1::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint * emcClu,AliPHOSRecPoint * cpvClu, Bool_t &toofar)
+Float_t AliPHOSTrackSegmentMakerv1::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint * emcClu,AliPHOSRecPoint * cpvClu, Bool_t &toofar)const
{
// Calculates the distance between the EMC RecPoint and the PPSD RecPoint
// Clusters are sorted in "rows" and "columns" of width 1 cm
}
//____________________________________________________________________________
-void AliPHOSTrackSegmentMakerv1::MakeLinks()
+void AliPHOSTrackSegmentMakerv1::MakeLinks()const
{
// Finds distances (links) between all EMC and PPSD clusters,
// which are not further apart from each other than fR0
}
//____________________________________________________________________________
-void AliPHOSTrackSegmentMakerv1::Print(Option_t * option)const
+void AliPHOSTrackSegmentMakerv1::Print(Option_t * option)const
{
- // Prints the parameters of track segment maker
+ // Print TrackSegmentMaker parameters
+
if(fIsInitialized){
cout << "======== AliPHOSTrackSegmentMakerv1 ========" << endl ;
cout << "Making Track segments "<< endl ;
cwd->cd();
}
+
tsBranch->Fill() ;
tsMakerBranch->Fill() ;
+// gAlice->TreeR()->Fill() ; // YK 28.05.01
gAlice->TreeR()->Write(0,kOverwrite) ;
}
virtual void Exec(Option_t * option) ;
void FillOneModule() ; // Finds range in which RecPoints belonging current PHOS module are
- void MakeLinks() ; //Evaluates distances(links) between EMC and PPSD
+ void MakeLinks() const; //Evaluates distances(links) between EMC and PPSD
void MakePairs() ; //Finds pairs(triplets) with smallest link
virtual void Print(Option_t * option) const ;
virtual Bool_t ReadRecPoints() ;
virtual void WriteTrackSegments() ;
AliPHOSTrackSegmentMakerv1 & operator = (const AliPHOSTrackSegmentMakerv1 & ) {
- // assignement operator requested by coding convention
- // but not needed
+ // assignement operator requested by coding convention but not needed
abort() ;
return *this ;
}
private:
- Float_t GetDistanceInPHOSPlane(AliPHOSEmcRecPoint * EmcClu , AliPHOSRecPoint * Ppsd , Bool_t & TooFar ) ; // see R0
+ Float_t GetDistanceInPHOSPlane(AliPHOSEmcRecPoint * EmcClu , AliPHOSRecPoint * Ppsd , Bool_t & TooFar )const ; // see R0
void Init() ;
void PrintTrackSegments(Option_t *option) ;
TClonesArray * fTrackSegments; // ! list of final track segments
- Bool_t fIsInitialized ; //
+ Bool_t fIsInitialized ; // kTRUE if track segment maker is initialized
Float_t fR0 ; // Maximum distance between a EMC RecPoint and a PPSD RecPoint
virtual Float_t ZMin() const; // overall dimension of the module (min)
virtual Float_t ZMax() const; // overall dimension of the module (max)
- virtual AliPHOSGeometry * GetGeometry() {
+ virtual AliPHOSGeometry * GetGeometry() const {
// gets the pointer to the AliPHOSGeometry unique instance
return fGeom ;
}
AliPHOSv0()
{
// ctor
-
}
//____________________________________________________________________________
Float_t pNorm = p.Py();
Float_t eloss = kdEdx;
-// cout << "CPVDigitize: YVK : "<<hitX<<" "<<hitZ<<" | "<<pX<<" "<<pZ<<" "<<pNorm<<endl;
-
Float_t dZY = pZ/pNorm * fGeom->GetCPVGasThickness();
Float_t dXY = pX/pNorm * fGeom->GetCPVGasThickness();
gRandom->Rannor(rnor1,rnor2);
}
virtual ~AliPHOSv1(void) ;
- virtual void AddHit( Int_t shunt, Int_t primary, Int_t track, Int_t id, Float_t *hits) ;
+ virtual void AddHit( Int_t shunt, Int_t primary, Int_t track, Int_t id, Float_t *hits);
virtual Int_t IsVersion(void) const {
// Gives the version number
return 1 ;
AliPHOSv2(const char *name, const char *title="") ;
virtual ~AliPHOSv2(void) ;
- virtual void AddHit( Int_t shunt, Int_t primary, Int_t track, Int_t id, Float_t *hits) ;
+ virtual void AddHit( Int_t shunt, Int_t primary, Int_t track, Int_t id, Float_t *hits);
virtual Int_t IsVersion(void) const {
// Gives the version number
return 2 ;
}
//___________________________________________________________________________
-Float_t AliPHOSv4::GetBigBox(Int_t index)
+Float_t AliPHOSv4::GetBigBox(Int_t index) const
{
// Get the X, Y or Z dimension of the box describing a PHOS module
void AddRecParticle(const AliPHOSFastRecParticle & rp) ; // adds primary particle to the RecParticles list
virtual void BuildGeometry(void) ; // creates the geometry for the ROOT display
virtual void CreateGeometry(void) ; // creates the geometry for GEANT
- Float_t GetBigBox(Int_t index) ;
- virtual AliPHOSGeometry * GetGeometry() {
+ Float_t GetBigBox(Int_t index) const;
+ virtual AliPHOSGeometry * GetGeometry() const {
// gets the pointer to the AliPHOSGeometry unique instance
return fGeom ;
}
void MakeRecParticle(const Int_t modid, const TVector3 pos, AliPHOSFastRecParticle & rp) ; // makes a reconstructes particle from primary
Int_t MakeType(AliPHOSFastRecParticle & rp) ; // gets the detected type of particle
// gets TClonesArray of reconstructed particles
- TClonesArray * FastRecParticles() { return fFastRecParticles ; }
+ TClonesArray * FastRecParticles() const { return fFastRecParticles ; }
virtual void ResetPoints() ;
void ResetFastRecParticles() ;
void SetBigBox(Int_t index, Float_t value) ;
}
AliPHOSv4 & operator = (const AliPHOSv4 & ) {
- // assignement operator requested by coding convention
- // but not needed
+ // assignement operator requested by coding convention but not needed
assert(0==1) ;
return *this ;
}