#include <TH1F.h> //HitQA()
#include <AliLog.h> //in many methods to print AliInfo
-Bool_t AliHMPID::fDoFeed=kTRUE;
+Bool_t AliHMPID::fgDoFeed=kTRUE;
ClassImp(AliHMPID)
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include <TClonesArray.h> //XxxCreate()
#include <TObjArray.h> //fDig,fClu field
-
+//.
+//HMPID base class
+//.
class AliHMPID : public AliDetector //TObject-TNamed-AliModule-AliDetector-AliHMPID
{
void MakeBranch (Option_t *opt=""); //from AliModule invokde from AliRun::Tree2Tree() to make requested HMPID branch
void SetTreeAddress ( ); //from AliModule invoked from AliRun::GetEvent(), AliLoader::SetTAddrInDet()
virtual void StepManager ( )=0; //from AliModule invoked from AliMC
- void DoFeed (Bool_t doFeed ){fDoFeed=doFeed;} // Set feedback photons
+ void DoFeed (Bool_t doFeed ){fgDoFeed=doFeed;} // Set feedback photons
//private part +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void HitCreate( ) {if(fHits)return; fHits=new TClonesArray("AliHMPIDHit"); fNhits=0; }//create hits list
fClu=new TObjArray(7); for(Int_t i=0;i<7;i++)fClu->AddAt(new TClonesArray("AliHMPIDCluster"),i); }//create clusters list
void CluReset ( ) {if(fClu)for(int i=0;i<7;i++)fClu->At(i)->Clear(); }//clean clusters list
protected:
- static Bool_t fDoFeed;
+ static Bool_t fgDoFeed; //Flag to switch on/off Feedback photon creation
TClonesArray *fSdi; //! list of sdigits
TObjArray *fDig; //! each chamber holds it's one list of digits
TObjArray *fClu; //! each chamber holds it's one list of clusters
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDHit::Draw(Option_t*)
{
+// Draw option of the hits in the display
Int_t iMark;
switch(Pid()){
case 50000050: iMark=4; break;
default: iMark=26; break;
}
TMarker *pMark=new TMarker(fLx,fLy,iMark); pMark->SetMarkerColor(kRed); pMark->Draw();
-}
+}//Draw
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDHit::Hit2Sdi(TClonesArray *pSdiLst,Int_t iHow)const
{
new((*pSdiLst)[iSdiCnt++]) AliHMPIDDigit(dig);
}
}
-}
+}//Hit2Sdi
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDHit::Print(Option_t *opt)const
{
Printf("%sHIT: ch=%i (%7.3f,%7.3f) Q=%8.3f TID= %5i, MARS=(%7.2f,%7.2f,%7.2f) %s %s",
opt, Ch(), fLx,fLy, fQ, fTrack, X(), Y(), Z(), sPart,
(AliHMPIDDigit::IsInDead(LorsX(),LorsY()))? "IN DEAD ZONE":"");
-}
+}//Print
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define AliHMPIDHit_h
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
-
+//.
+// HMPID base class to produce hits
+//.
+//.
#include <AliHit.h> //base class
#include <TVector3.h> //ctor
#include "AliHMPIDDigit.h" //QdcTot()
// Construct ideal position matrix for a given chamber
// Arguments: iCh- chamber ID; pMatrix- pointer to precreated unity matrix where to store the results
// Returns: none
- const Double_t kAngHor=19.5; // horizontal angle between chambers 19.5 grad
- const Double_t kAngVer=20; // vertical angle between chambers 20 grad
- const Double_t kAngCom=30; // common HMPID rotation with respect to x axis 30 grad
- const Double_t trans[3]={490,0,0}; //center of the chamber is on window-gap surface
- pMatrix->RotateY(90); //rotate around y since initial position is in XY plane -> now in YZ plane
- pMatrix->SetTranslation(trans); //now plane in YZ is shifted along x
+ const Double_t kAngHor=19.5; // horizontal angle between chambers 19.5 grad
+ const Double_t kAngVer=20; // vertical angle between chambers 20 grad
+ const Double_t kAngCom=30; // common HMPID rotation with respect to x axis 30 grad
+ const Double_t kTrans[3]={490,0,0}; // center of the chamber is on window-gap surface
+ pMatrix->RotateY(90); // rotate around y since initial position is in XY plane -> now in YZ plane
+ pMatrix->SetTranslation(kTrans); // now plane in YZ is shifted along x
switch(iCh){
case 0: pMatrix->RotateY(kAngHor); pMatrix->RotateZ(-kAngVer); break; //right and down
case 1: pMatrix->RotateZ(-kAngVer); break; //down
void Print(Option_t *opt="") const; //print current parametrization
static inline AliHMPIDParam* Instance(); //pointer to AliHMPIDParam singleton
- Double_t MeanIdxRad () {return 1.29204;} //<--TEMPORAR--> to be removed in future Mean ref index C6F14
- Double_t MeanIdxWin () {return 1.57819;} //<--TEMPORAR--> to be removed in future. Mean ref index quartz
- Float_t DistCut () {return 1.0;} //<--TEMPORAR--> to be removed in future. Cut for MIP-TRACK residual
- Float_t QCut () {return 100;} //<--TEMPORAR--> to be removed in future. Separation PHOTON-MIP charge
- Float_t MultCut () {return 200;} //<--TEMPORAR--> to be removed in future. Multiplicity cut to activate WEIGHT procedure
+ Double_t MeanIdxRad ()const {return 1.29204;} //<--TEMPORAR--> to be removed in future Mean ref index C6F14
+ Double_t MeanIdxWin ()const {return 1.57819;} //<--TEMPORAR--> to be removed in future. Mean ref index quartz
+ Float_t DistCut ()const {return 1.0;} //<--TEMPORAR--> to be removed in future. Cut for MIP-TRACK residual
+ Float_t QCut ()const {return 100;} //<--TEMPORAR--> to be removed in future. Separation PHOTON-MIP charge
+ Float_t MultCut ()const {return 200;} //<--TEMPORAR--> to be removed in future. Multiplicity cut to activate WEIGHT procedure
static Int_t Stack(Int_t evt=-1,Int_t tid=-1); //Print stack info for event and tid
static Int_t StackCount(Int_t pid,Int_t evt); //Counts stack particles of given sort in given event
static void IdealPosition(Int_t iCh,TGeoHMatrix *m); //ideal position of given chamber
protected:
AliHMPIDParam(); //default ctor is protected to enforce it to be singleton
static AliHMPIDParam *fgInstance; //static pointer to instance of AliHMPIDParam singleton
- TGeoHMatrix *fM[7]; //pointers to matrices defining HMPID chambers rotations-translations
- Float_t fX; //x shift of LORS with respect to rotated MARS
- Float_t fY; //y shift of LORS with respect to rotated MARS
+ TGeoHMatrix *fM[7]; //pointers to matrices defining HMPID chambers rotations-translations
+ Float_t fX; //x shift of LORS with respect to rotated MARS
+ Float_t fY; //y shift of LORS with respect to rotated MARS
ClassDef(AliHMPIDParam,0) //HMPID main parameters class
};
#include <TGraph.h> //Process()
#include <AliLog.h> //Process()
+//.
+// HMPID Preprocessor base class
+//.
+//.
+//.
ClassImp(AliHMPIDPreprocessor)
-char *AliHMPIDPreprocessor::fP ="HMP_DET/HMP_MP%i/HMP_MP%i_GAS/HMP_MP%i_GAS_PMWC.actual.value";
-char *AliHMPIDPreprocessor::fT1="HMP_DET/HMP_MP%i/HMP_MP%i_LIQ_LOOP.actual.sensors.Rad%iIn_Temp";
-char *AliHMPIDPreprocessor::fT2="HMP_DET/HMP_MP%i/HMP_MP%i_LIQ_LOOP.actual.sensors.Rad%iOut_Temp";
-char *AliHMPIDPreprocessor::fHV="HMP_DET/HMP_MP%i/HMP_MP%i_PW/HMP_MP%i_SEC0/HMP_MP%i_SEC0_HV.actual.vMon";
-
-
-
+char *AliHMPIDPreprocessor::fgP ="HMP_DET/HMP_MP%i/HMP_MP%i_GAS/HMP_MP%i_GAS_PMWC.actual.value";
+char *AliHMPIDPreprocessor::fgT1="HMP_DET/HMP_MP%i/HMP_MP%i_LIQ_LOOP.actual.sensors.Rad%iIn_Temp";
+char *AliHMPIDPreprocessor::fgT2="HMP_DET/HMP_MP%i/HMP_MP%i_LIQ_LOOP.actual.sensors.Rad%iOut_Temp";
+char *AliHMPIDPreprocessor::fgHV="HMP_DET/HMP_MP%i/HMP_MP%i_PW/HMP_MP%i_SEC0/HMP_MP%i_SEC0_HV.actual.vMon";
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDPreprocessor::Initialize(Int_t run, UInt_t startTime,UInt_t endTime)
#include <AliPreprocessor.h> //base class
+//.
+//HMPID Preprocessor base class
+//.
class TMap;
class AliHMPIDPreprocessor : public AliPreprocessor
public:
AliHMPIDPreprocessor(AliShuttleInterface* pShuttle):AliPreprocessor("HMP",pShuttle) {}
virtual ~AliHMPIDPreprocessor( ) {}
- static char *fP; // Name of the aliases provided by the DCS
- static char *fHV; // Name of the aliases provided by the DCS
- static char *fT1; // Name of the aliases provided by the DCS
- static char *fT2; // Name of the aliases provided by the DCS
+
protected:
+ static char *fgP; // Name of the aliases provided by the DCS
+ static char *fgHV; // Name of the aliases provided by the DCS
+ static char *fgT1; // Name of the aliases provided by the DCS
+ static char *fgT2; // Name of the aliases provided by the DCS
virtual void Initialize(Int_t run, UInt_t startTime, UInt_t endTime);
virtual UInt_t Process (TMap* pDcsMap );
ClassDef(AliHMPIDPreprocessor, 0);
Double_t SigCrom (Double_t ckovTh,Double_t ckovPh,Double_t beta )const;//error due to unknonw photon energy
Double_t Sigma2 (Double_t ckovTh,Double_t ckovPh )const;//photon candidate sigma
enum ETrackingFlags {kMipDistCut=-9,kMipQdcCut=-5,kNoPhotAccept=-11};
-
+
+private:
static const Double_t fgkRadThick; //radiator thickness
static const Double_t fgkWinThick; //window thickness
static const Double_t fgkGapThick; //proximity gap thickness
* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-
+//.
+// HMPID base class to reconstruct an event
+//.
+//.
+//.
#include "AliHMPIDReconstructor.h" //class header
#include "AliHMPID.h" //Reconstruct()
#include "AliHMPIDCluster.h" //Dig2Clu()
#define AliHMPIDReconstructor_h
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
-
+//.
+// HMPID base class to reconstruct an event
+//.
#include <AliReconstructor.h> //base class
#include "AliHMPIDTracker.h" //CreateTracker()
#include <TMatrixF.h> //UseDig()
#include <AliAlignObj.h> //GetTrackPoint()
#include <AliCDBManager.h>
#include <AliCDBEntry.h>
-
+//.
+// HMPID base class fo tracking
+//.
+//.
+//.
ClassImp(AliHMPIDTracker)
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AliHMPIDTracker::AliHMPIDTracker():AliTracker()
#include <AliTracker.h> //base class
#include "AliHMPID.h" //Recon()
#include <AliRun.h> //Recon()
-#include <TF1.h> //field
+#include <TF1.h> //field
+//.
+// HMPID base class fo tracking
+//.
+
class AliESD; //Recon()
class AliESDtrack; //IntTrkCha()
class AliHMPIDTracker : public AliTracker
Bool_t GetTrackPoint (Int_t idx,AliTrackPoint &pt)const; // from AliTracker
Int_t Clusters2Tracks(AliESD * ) {return 0;} //pure virtual from AliTracker
Int_t LoadClusters (TTree *pCluTr ); //pure virtual from AliTracker
- Int_t PropagateBack (AliESD * ); //pure virtual from AliTracker
+ Int_t PropagateBack (AliESD *pEsd ); //pure virtual from AliTracker
Int_t RefitInward (AliESD * ) {return 0;} //pure virtual from AliTracker
void UnloadClusters ( ) { } //pure virtual from AliTracker
//private part
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
-
+//.
+//HMPID v0 implementation.
+//.
#include "AliHMPID.h"
class AliHMPIDv0 : public AliHMPID
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
-
+//
+//HMPID base class of geometry
+//
#include "AliHMPID.h" //base class
#include "AliHMPIDDigitizer.h" //CreateDigitizer()
void AddAlignableVolumes( )const; //from AliModule invoked from AliMC
void CreateMaterials ( ); //from AliModule invoked from AliMC
void CreateGeometry ( ); //from AliModule invoked from AliMC
- AliDigitizer* CreateDigitizer (AliRunDigitizer *m )const{return new AliHMPIDDigitizer(m);} //from AliModule invoked from AliSimulation::RunDigitization()
+ AliDigitizer* CreateDigitizer (AliRunDigitizer *m )const{return new AliHMPIDDigitizer(m);} //from AliModule invoked from AliSimulation::RunDigitization()
void Digits2Raw ( ); //from AliModule invoked from AliSimulation::WriteRawFiles()
virtual void DefineOpticalProperties(); //from AliModule invoked from AliMC::ConstructOpGeometry() to set Cerenkov properties
void Hits2SDigits ( ); //from AliModule invoked from AliSimulation::RunSDigitization()
void Init ( ); //from AliModule invoked from AliMC::InitGeometry()
Int_t IsVersion ( )const{return 1; } //from AliModule not used
void Print (const Option_t *opt="" )const; //from TObject
- Bool_t Raw2SDigits (AliRawReader * ); //from AliMOdule invoked from AliSimulation
+ Bool_t Raw2SDigits (AliRawReader *pRR ); //from AliMOdule invoked from AliSimulation
void StepManager ( ); //from AliModule invoked from AliMC::Stepping()
//private part++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void GenFee (Float_t qtot ); //generates feedback photons