From: schutz Date: Wed, 19 Jan 2000 15:33:06 +0000 (+0000) Subject: Clean up to correct for the mess introduced by my eratic branching ! X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=9f616d6157da38ebfea66eb5f514c7c6b77fa013 Clean up to correct for the mess introduced by my eratic branching ! --- diff --git a/PHOS/AliPHOS.cxx b/PHOS/AliPHOS.cxx index da4f679e2cf..0ea0a1bc26d 100644 --- a/PHOS/AliPHOS.cxx +++ b/PHOS/AliPHOS.cxx @@ -27,6 +27,7 @@ #include "AliPHOS.h" #include "AliMC.h" +//#include "TGeant3.h" #include "AliRun.h" ClassImp(AliPHOS) @@ -273,11 +274,7 @@ void AliPHOS::CreateMaterials() // Tracking threshold for photons and electrons in the scintillator crystal gMC->Gstpar(idtmed[699], "CUTGAM",0.5E-4) ; gMC->Gstpar(idtmed[699], "CUTELE",1.0E-4) ; - - // Tracking threshold for photons and electrons in the gas - gMC->Gstpar(idtmed[715], "CUTGAM",0.5E-4) ; - gMC->Gstpar(idtmed[715], "CUTELE",1.0E-4) ; - + // --- Generate explicitly delta rays in the titan cover --- gMC->Gstpar(idtmed[704], "LOSS",3.) ; gMC->Gstpar(idtmed[704], "DRAY",1.) ; @@ -286,4 +283,25 @@ void AliPHOS::CreateMaterials() gMC->Gstpar(idtmed[701], "LOSS",3.) ; gMC->Gstpar(idtmed[701], "DRAY",1.) ; +// Tracking threshold for photons and electrons in the gas ArC02 + // TGeant3 *geant3 = (TGeant3*)gMC; + //geant3->SetERAN(5.e-8, 1.e1,90); + + gMC->Gstpar(idtmed[715], "CUTGAM",1.E-8) ; + gMC->Gstpar(idtmed[715], "CUTELE",1.E-8) ; + gMC->Gstpar(idtmed[715], "CUTNEU",1.E-8) ; + gMC->Gstpar(idtmed[715], "CUTHAD",1.E-8) ; + gMC->Gstpar(idtmed[715], "CUTMUO",1.E-8) ; + gMC->Gstpar(idtmed[715], "BCUTE",1.E-8) ; + gMC->Gstpar(idtmed[715], "BCUTM",1.E-8) ; + gMC->Gstpar(idtmed[715], "DCUTE",1.E-8) ; + gMC->Gstpar(idtmed[715], "DCUTM",1.E-8) ; + gMC->Gstpar(idtmed[715], "PPCUTM",1.E-8) ; + gMC->Gstpar(idtmed[715], "LOSS",2.) ; + gMC->Gstpar(idtmed[715], "DRAY",0.) ; + gMC->Gstpar(idtmed[715], "STRA",2.) ; + + + + } diff --git a/PHOS/AliPHOSClusterizerv1.cxx b/PHOS/AliPHOSClusterizerv1.cxx index 0ef7b04ee61..05712770428 100644 --- a/PHOS/AliPHOSClusterizerv1.cxx +++ b/PHOS/AliPHOSClusterizerv1.cxx @@ -24,7 +24,7 @@ // --- Standard library --- -#include "iostream.h" +#include // --- AliRoot header files --- @@ -55,9 +55,9 @@ AliPHOSClusterizerv1::AliPHOSClusterizerv1() //____________________________________________________________________________ Int_t AliPHOSClusterizerv1::AreNeighbours(AliPHOSDigit * d1, AliPHOSDigit * d2) { - // neigbours are defined as digits having at least common virtix + // neigbours are defined as digits having at least common vertex // The order of A and B in AreNeighbours(A,B) is important: first (A) should be digit - // in cluster, which compared with digits, which not clasterized yet + // in cluster, which compared with digits not clusterized yet Int_t rv = 0 ; AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ; @@ -97,7 +97,6 @@ void AliPHOSClusterizerv1::FillandSort(const DigitsList * dl, TObjArray * tl) // copies the digits with energy above thershold and sorts the list // according to increasing Id number - AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ; Int_t relid[4] ; @@ -134,7 +133,7 @@ void AliPHOSClusterizerv1:: GetNumberOfClustersFound(Int_t * numb) //____________________________________________________________________________ Bool_t AliPHOSClusterizerv1::IsInEmc(AliPHOSDigit * digit) { - Bool_t rv = kFALSE ; + Bool_t rv = kFALSE ; AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ; @@ -150,57 +149,61 @@ Bool_t AliPHOSClusterizerv1::IsInEmc(AliPHOSDigit * digit) //____________________________________________________________________________ void AliPHOSClusterizerv1::MakeClusters(const DigitsList * dl, RecPointsList * emcl, RecPointsList * ppsdl) { - // Fill and sort the working digits list TObjArray TempoDigitsList( dl->GetEntries() ) ; - this->FillandSort(dl, &TempoDigitsList) ; - - + FillandSort(dl, &TempoDigitsList) ; // Clusterization starts TIter nextdigit(&TempoDigitsList) ; AliPHOSDigit * digit ; Bool_t NotRemoved = kTRUE ; - + cout << "Cluster1" << endl; while ( (digit = (AliPHOSDigit *)nextdigit()) ) { // scan over the list of digits AliPHOSRecPoint * clu ; - + int * ClusterDigitsList[dl->GetEntries()] ; Int_t index ; - if (( (this->IsInEmc(digit)) && (Calibrate(digit->GetAmp()) > fEmcClusteringThreshold ) ) || - ( (!this->IsInEmc(digit)) && (Calibrate(digit->GetAmp()) > fPpsdClusteringThreshold ) ) ) { + if (( ( IsInEmc(digit) ) && ( Calibrate(digit->GetAmp() ) > fEmcClusteringThreshold ) ) || + ( ( !IsInEmc(digit) ) && ( Calibrate(digit->GetAmp() ) > fPpsdClusteringThreshold ) ) ) { Int_t iDigitInCluster = 0 ; - if (this->IsInEmc(digit) ) { - new ((*emcl)[fNumberOfEmcClusters]) AliPHOSEmcRecPoint(fW0, fLocMaxCut) ;// start a new EMC RecPoint + if ( IsInEmc(digit) ) { + emcl->Print(""); + cout << "Cluster2 EMC" << endl; + new ((*emcl)[fNumberOfEmcClusters]) AliPHOSEmcRecPoint(fW0, fLocMaxCut) ; // start a new EMC RecPoint + clu = (AliPHOSEmcRecPoint *) (*emcl)[fNumberOfEmcClusters] ; + fNumberOfEmcClusters++ ; + clu->AddDigit(*digit, Calibrate(digit->GetAmp())) ; - clu = (AliPHOSEmcRecPoint *) (*emcl)[fNumberOfEmcClusters++] ; - - clu->AddDigit(*digit,Calibrate(digit->GetAmp())) ; - - ClusterDigitsList[iDigitInCluster++] = (int* ) digit ; + ClusterDigitsList[iDigitInCluster] = (int* ) digit ; + iDigitInCluster++ ; TempoDigitsList.Remove(digit) ; } else { - new ((*ppsdl)[fNumberOfPpsdClusters]) AliPHOSPpsdRecPoint() ;// start a new PPSD cluster - clu = (AliPHOSPpsdRecPoint *) ppsdl->At(fNumberOfPpsdClusters++) ; - clu->AddDigit(*digit,0.) ; - ClusterDigitsList[iDigitInCluster++] = (int* ) digit ; - TempoDigitsList.Remove(digit) ; + cout << "Cluster2 PPSD" << endl; + new ((*ppsdl)[fNumberOfPpsdClusters]) AliPHOSPpsdRecPoint() ; // start a new PPSD cluster + clu = (AliPHOSPpsdRecPoint *) ppsdl->At(fNumberOfPpsdClusters) ; + fNumberOfPpsdClusters++ ; + clu->AddDigit(*digit, 0.) ; + ClusterDigitsList[iDigitInCluster] = (int* ) digit ; + iDigitInCluster++ ; + TempoDigitsList.Remove(digit) ; nextdigit.Reset() ; - //Here we remove resting EMC digits, which can not make cluster - if(NotRemoved){ + // Here we remove resting EMC digits, which cannot make cluster + + if( NotRemoved ) { - while( (digit = (AliPHOSDigit *)nextdigit()) ){ + while( ( digit = (AliPHOSDigit *)nextdigit() ) ) { - if(IsInEmc(digit)) TempoDigitsList.Remove(digit) ; + if( IsInEmc(digit) ) + TempoDigitsList.Remove(digit) ; else break ; - - }// while digit + + } // while digit } // if NotRemoved @@ -210,20 +213,21 @@ void AliPHOSClusterizerv1::MakeClusters(const DigitsList * dl, RecPointsList * e AliPHOSDigit * digitN ; index = 0 ; - while (index < iDigitInCluster){ // scan over digits already in claster - digit = (AliPHOSDigit *) ClusterDigitsList[index++] ; - + while (index < iDigitInCluster){ // scan over digits already in cluster + digit = (AliPHOSDigit *) ClusterDigitsList[index] ; + index++ ; while ( (digitN = (AliPHOSDigit *)nextdigit()) ) { // scan over the reduced list of digits Int_t ineb = AreNeighbours(digit, digitN); // call (digit,digitN) in THAT oder !!!!! switch (ineb ) { - case 0 : // not a neibors + case 0 : // not a neighbour break ; - case 1 : // Are neibors - clu->AddDigit(*digitN,Calibrate(digitN->GetAmp())) ; - ClusterDigitsList[iDigitInCluster++] =(int*) digitN ; + case 1 : // are neighbours + clu->AddDigit( *digitN, Calibrate( digitN->GetAmp() ) ) ; + ClusterDigitsList[iDigitInCluster] =(int*) digitN ; + iDigitInCluster++ ; TempoDigitsList.Remove(digitN) ; break ; - case 2 : // to far from each other + case 2 : // too far from each other goto endofloop; } // switch diff --git a/PHOS/AliPHOSClusterizerv1.h b/PHOS/AliPHOSClusterizerv1.h index cbe1d712bdf..1a42142e005 100644 --- a/PHOS/AliPHOSClusterizerv1.h +++ b/PHOS/AliPHOSClusterizerv1.h @@ -30,13 +30,13 @@ public: AliPHOSClusterizerv1() ; // ctor virtual ~AliPHOSClusterizerv1(){} ; // dtor - Int_t AreNeighbours(AliPHOSDigit * d1, AliPHOSDigit * d2) ; // checks if digits are in neighbour cells - Float_t Calibrate(Int_t Amp){ return fA + fB*Amp ;} //Tranforms Amp to energy - void FillandSort(const DigitsList * dl, TObjArray * tl) ; // sorts the list according to increasing id + Int_t AreNeighbours(AliPHOSDigit * d1, AliPHOSDigit * d2) ; // Checks if digits are in neighbour cells + Float_t Calibrate(Int_t Amp){ return (fA + fB * Amp) ;} // Tranforms Amp to energy + void FillandSort(const DigitsList * dl, TObjArray * tl) ; // Sorts the list according to increasing id Float_t GetLogWeightCut(void){return fW0 ; } Float_t GetLocalMaxCut(void) {return fLocMaxCut ; } virtual void GetNumberOfClustersFound(Int_t * numb) ; - Bool_t IsInEmc(AliPHOSDigit * digit) ; // tells id digit is in EMCA + Bool_t IsInEmc(AliPHOSDigit * digit) ; // Tells if id digit is in EMC virtual void MakeClusters(const DigitsList * dl, RecPointsList * emcl, RecPointsList * ppsdl) ; // does the job void PrintParameters() ; void SetCalibrationParameters(Float_t A,Float_t B){ fA = A ; fB = B;} diff --git a/PHOS/AliPHOSEmcRecPoint.cxx b/PHOS/AliPHOSEmcRecPoint.cxx index 2c33578d9c7..f015b40250d 100644 --- a/PHOS/AliPHOSEmcRecPoint.cxx +++ b/PHOS/AliPHOSEmcRecPoint.cxx @@ -19,12 +19,14 @@ ////////////////////////////////////////////////////////////////////////////// // --- ROOT system --- - +#include "TPad.h" +#include "TH2.h" #include "TMath.h" +#include "TCanvas.h" // --- Standard library --- -#include "iostream.h" +#include // --- AliRoot header files --- @@ -50,11 +52,11 @@ AliPHOSEmcRecPoint::AliPHOSEmcRecPoint(Float_t W0, Float_t LocMaxCut) fLocPos.SetX(1000000.) ; //Local position should be evaluated } -// //____________________________________________________________________________ -// AliPHOSEmcRecPoint::~AliPHOSEmcRecPoint() -// { -// // dtor -// } +//____________________________________________________________________________ +AliPHOSEmcRecPoint::~AliPHOSEmcRecPoint() +{ + // dtor +} //____________________________________________________________________________ void AliPHOSEmcRecPoint::AddDigit(AliDigitNew & digit, Float_t Energy) @@ -63,23 +65,33 @@ void AliPHOSEmcRecPoint::AddDigit(AliDigitNew & digit, Float_t Energy) // and accumulates the total amplitude and the multiplicity if ( fMulDigit >= fMaxDigit ) { // increase the size of the lists - int * tempo = new ( int[fMaxDigit*=2] ) ; - Float_t * tempoE = new ( Float_t[fMaxDigit*=2] ) ; - Int_t index ; - + fMaxDigit*=2 ; + int * tempo = new ( int[fMaxDigit] ) ; + Float_t * tempoE = new ( Float_t[fMaxDigit] ) ; + + Int_t index ; for ( index = 0 ; index < fMulDigit ; index++ ){ tempo[index] = fDigitsList[index] ; tempoE[index] = fEnergyList[index] ; } - delete fDigitsList ; - delete fEnergyList ; - fDigitsList = tempo ; - fEnergyList = tempoE ; - } + delete [] fDigitsList ; + fDigitsList = new ( int[fMaxDigit] ) ; + + delete [] fEnergyList ; + fEnergyList = new ( Float_t[fMaxDigit] ) ; + + for ( index = 0 ; index < fMulDigit ; index++ ){ + fDigitsList[index] = tempo[index] ; + fEnergyList[index] = tempoE[index] ; + } + + delete [] tempo ; + delete [] tempoE ; + } // if - fDigitsList[fMulDigit] = (int) &digit ; - fEnergyList[fMulDigit++]= Energy ; + fDigitsList[fMulDigit] = (int) &digit ; + fEnergyList[fMulDigit++] = Energy ; fAmp += Energy ; } @@ -143,6 +155,108 @@ Int_t AliPHOSEmcRecPoint::Compare(TObject * obj) return rv ; } +//______________________________________________________________________________ +void AliPHOSEmcRecPoint::ExecuteEvent(Int_t event, Int_t px, Int_t py) +{ +//*-*-*-*-*-*-*-*-*-*-*Execute action corresponding to one event*-*-*-* +//*-* ========================================= +// This member function is called when a AliPHOSRecPoint is clicked with the locator +// +// If Left button is clicked on AliPHOSRecPoint, the digits are switched on +// and switched off when the mouse button is released. +// + + // static Int_t pxold, pyold; + + static TGraph * DigitGraph = 0 ; + + if (!gPad->IsEditable()) return; + + TH2F * Histo = 0 ; + TCanvas * HistoCanvas ; + + switch (event) { + + case kButton1Down: { + AliPHOSDigit * digit ; + AliPHOSGeometry * PHOSGeom = (AliPHOSGeometry *) fGeom ; + Int_t iDigit; + Int_t relid[4] ; + Float_t xi[fMulDigit] ; + Float_t zi[fMulDigit] ; + + // create the histogram for the single cluster + // 1. gets histogram boundaries + Float_t ximax = -999. ; + Float_t zimax = -999. ; + Float_t ximin = 999. ; + Float_t zimin = 999. ; + + for(iDigit=0; iDigitAbsToRelNumbering(digit->GetId(), relid) ; + PHOSGeom->RelPosInModule(relid, xi[iDigit], zi[iDigit]); + if ( xi[iDigit] > ximax ) + ximax = xi[iDigit] ; + if ( xi[iDigit] < ximin ) + ximin = xi[iDigit] ; + if ( zi[iDigit] > zimax ) + zimax = zi[iDigit] ; + if ( zi[iDigit] < zimin ) + zimin = zi[iDigit] ; + } + ximax += PHOSGeom->GetCrystalSize(0) / 2. ; + zimax += PHOSGeom->GetCrystalSize(2) / 2. ; + ximin -= PHOSGeom->GetCrystalSize(0) / 2. ; + zimin -= PHOSGeom->GetCrystalSize(2) / 2. ; + Int_t xdim = (int)( (ximax - ximin ) / PHOSGeom->GetCrystalSize(0) + 0.5 ) ; + Int_t zdim = (int)( (zimax - zimin ) / PHOSGeom->GetCrystalSize(2) + 0.5 ) ; + + // 2. gets the histogram title + + Text_t title[100] ; + sprintf(title,"Energy=%1.2f GeV ; Digits ; %d ", GetEnergy(), GetDigitsMultiplicity()) ; + + if (!Histo) { + delete Histo ; + Histo = 0 ; + } + Histo = new TH2F("cluster3D", title, xdim, ximin, ximax, zdim, zimin, zimax) ; + + Float_t x, z ; + for(iDigit=0; iDigitAbsToRelNumbering(digit->GetId(), relid) ; + PHOSGeom->RelPosInModule(relid, x, z); + Histo->Fill(x, z, fEnergyList[iDigit] ) ; + } + + if (!DigitGraph) { + DigitGraph = new TGraph(fMulDigit,xi,zi); + DigitGraph-> SetMarkerStyle(5) ; + DigitGraph-> SetMarkerSize(1.) ; + DigitGraph-> SetMarkerColor(1) ; + DigitGraph-> Paint("P") ; + } + + Print() ; + HistoCanvas = new TCanvas("cluser", "a single cluster", 600, 500) ; + HistoCanvas->Draw() ; + Histo->Draw("lego1") ; + + break; + } + + case kButton1Up: + if (DigitGraph) { + delete DigitGraph ; + DigitGraph = 0 ; + } + break; + + } +} + //____________________________________________________________________________ Float_t AliPHOSEmcRecPoint::GetDispersion() { @@ -257,18 +371,18 @@ Int_t AliPHOSEmcRecPoint::GetNumberOfLocalMax(int * maxAt, Float_t * maxAtEner Int_t iDigitN ; Int_t iDigit ; - for(iDigit=0; iDigit fEnergyList[iDigitN] ) { maxAt[iDigitN] = -1 ; //but may be digit is not local max too ? @@ -290,7 +404,8 @@ Int_t AliPHOSEmcRecPoint::GetNumberOfLocalMax(int * maxAt, Float_t * maxAtEner for(iDigit=0; iDigit -#include "assert.h" +#include +#include // --- AliRoot header files --- @@ -80,6 +80,88 @@ Bool_t AliPHOSGeometry::AbsToRelNumbering(const Int_t AbsId, Int_t * RelId) } return rv ; } +//____________________________________________________________________________ +void AliPHOSGeometry::EmcModuleCoverage(const Int_t mod, Double_t & tm, Double_t & tM, Double_t & pm, Double_t & pM, Option_t * opt) +{ + // calculates the angular coverage in theta and phi of a EMC module + + Double_t conv ; + if ( opt == kRadian ) + conv = 1. ; + else if ( opt == kDegre ) + conv = 180. / TMath::Pi() ; + else { + cout << " AliPHOSGeometry::EmcXtalCoverage : " << opt << " unknown option; result in radian " << endl ; + conv = 1. ; + } + + Float_t phi = GetPHOSAngle(mod) * (TMath::Pi() / 180.) ; + Float_t Y0 = GetIPtoOuterCoverDistance() + GetUpperPlateThickness() + + GetSecondUpperPlateThickness() + GetUpperCoolingPlateThickness() ; + + Double_t angle = TMath::ATan( GetCrystalSize(0)*GetNPhi() / (2 * Y0) ) ; + phi = phi + 1.5 * TMath::Pi() ; // to follow the convention of the particle generator(PHOS is between 230 and 310 deg.) + Double_t m = phi - angle ; + Double_t M = phi + angle ; + pM = TMath::Max(M, m) * conv ; + pm = TMath::Min(M, m) * conv ; + + angle = TMath::ATan( GetCrystalSize(2)*GetNZ() / (2 * Y0) ) ; + M = TMath::Pi() / 2. + angle ; // to follow the convention of the particle generator(PHOS is at 90 deg.) + m = TMath::Pi() / 2. - angle ; + tM = TMath::Max(M, m) * conv ; + tm = TMath::Min(M, m) * conv ; + +} + +//____________________________________________________________________________ +void AliPHOSGeometry::EmcXtalCoverage(Double_t & theta, Double_t & phi, Option_t * opt) +{ + // calculates the angular coverage in theta and phi of a single crystal in a EMC module + + Double_t conv ; + if ( opt == kRadian ) + conv = 1. ; + else if ( opt == kDegre ) + conv = 180. / TMath::Pi() ; + else { + cout << " AliPHOSGeometry::EmcXtalCoverage : " << opt << " unknown option; result in radian " << endl ; + conv = 1. ; + } + + Float_t Y0 = GetIPtoOuterCoverDistance() + GetUpperPlateThickness() + + GetSecondUpperPlateThickness() + GetUpperCoolingPlateThickness() ; + theta = 2 * TMath::ATan( GetCrystalSize(2) / (2 * Y0) ) * conv ; + phi = 2 * TMath::ATan( GetCrystalSize(0) / (2 * Y0) ) * conv ; +} + + +//____________________________________________________________________________ +void AliPHOSGeometry::ImpactOnEmc(const Double_t theta, const Double_t phi, Int_t & ModuleNumber, Double_t & z, Double_t & x) +{ + // calculates the impact coordinates of a neutral particle + // emitted in direction theta and phi in ALICE + + // searches for the PHOS EMC module + ModuleNumber = 0 ; + Double_t tm, tM, pm, pM ; + Int_t index = 1 ; + while ( ModuleNumber == 0 && index <= GetNModules() ) { + EmcModuleCoverage(index, tm, tM, pm, pM) ; + if ( (theta >= tm && theta <= tM) && (phi >= pm && phi <= pM ) ) + ModuleNumber = index ; + index++ ; + } + if ( ModuleNumber != 0 ) { + Float_t phi0 = GetPHOSAngle(ModuleNumber) * (TMath::Pi() / 180.) + 1.5 * TMath::Pi() ; + Float_t Y0 = GetIPtoOuterCoverDistance() + GetUpperPlateThickness() + + GetSecondUpperPlateThickness() + GetUpperCoolingPlateThickness() ; + Double_t angle = phi - phi0; + x = Y0 * TMath::Tan(angle) ; + angle = theta - TMath::Pi() / 2 ; + z = Y0 * TMath::Tan(angle) ; + } +} //____________________________________________________________________________ void AliPHOSGeometry::GetGlobal(const AliRecPoint* RecPoint, TVector3 & gpos, TMatrix & gmat) @@ -258,7 +340,7 @@ void AliPHOSGeometry::InitPPSD(void) fAvalancheGap = 0.01 ; fCathodeThickness = 0.0009 ; fCompositeThickness = 0.3 ; - fConversionGap = 0.3 ; + fConversionGap = 0.6 ; fLeadConverterThickness = 0.56 ; fLeadToMicro2Gap = 0.1 ; fLidThickness = 0.2 ; @@ -292,7 +374,6 @@ void AliPHOSGeometry::InitPPSD(void) //____________________________________________________________________________ AliPHOSGeometry * AliPHOSGeometry::GetInstance() { - assert(fGeom!=0) ; return (AliPHOSGeometry *) fGeom ; } @@ -356,26 +437,29 @@ void AliPHOSGeometry::RelPosInAlice(const Int_t Id, TVector3 & pos ) Int_t PHOSModule = RelId[0] ; - + Float_t Y0 ; + if ( RelId[1] == 0 ) // it is a PbW04 crystal - { pos.SetY( -(GetIPtoOuterCoverDistance() + GetUpperPlateThickness() - + GetSecondUpperPlateThickness() + GetUpperCoolingPlateThickness()) ) ; + { Y0 = -(GetIPtoOuterCoverDistance() + GetUpperPlateThickness() + + GetSecondUpperPlateThickness() + GetUpperCoolingPlateThickness()) ; } if ( RelId[1] > 0 ) { // its a PPSD pad if ( RelId[1] > GetNumberOfModulesPhi() * GetNumberOfModulesZ() ) // its an bottom module { - pos.SetY(-( GetIPtoOuterCoverDistance() - GetMicromegas2Thickness() / 2.0) ) ; + Y0 = -( GetIPtoOuterCoverDistance() - GetMicromegas2Thickness() / 2.0) ; } else // its an upper module - pos.SetY(-( GetIPtoOuterCoverDistance() - GetMicromegas2Thickness() - GetLeadToMicro2Gap() - - GetLeadConverterThickness() - GetMicro1ToLeadGap() - GetMicromegas1Thickness() / 2.0) ) ; + Y0 = -( GetIPtoOuterCoverDistance() - GetMicromegas2Thickness() - GetLeadToMicro2Gap() + - GetLeadConverterThickness() - GetMicro1ToLeadGap() - GetMicromegas1Thickness() / 2.0) ; } Float_t x, z ; RelPosInModule(RelId, x, z) ; - pos.SetX(x); - pos.SetZ(z); + pos.SetX(x) ; + pos.SetZ(z) ; + pos.SetY( TMath::Sqrt(x*x + z*z + Y0*Y0) ) ; + Float_t Phi = GetPHOSAngle( PHOSModule) ; diff --git a/PHOS/AliPHOSGeometry.h b/PHOS/AliPHOSGeometry.h index 835d0413818..eb06b2422a8 100644 --- a/PHOS/AliPHOSGeometry.h +++ b/PHOS/AliPHOSGeometry.h @@ -23,6 +23,9 @@ #include "AliGeometry.h" #include "AliPHOSRecPoint.h" +static const TString kDegre("deg") ; +static const TString kRadian("rad") ; + class AliPHOSGeometry : public AliGeometry { public: @@ -46,6 +49,14 @@ public: // General Bool_t AbsToRelNumbering(const Int_t AbsId, Int_t * RelId) ; // converts the absolute PHOS numbering to a relative + void EmcModuleCoverage(const Int_t m, Double_t & tm, Double_t & tM, Double_t & pm, Double_t & pM, Option_t * opt = kRadian); + // calculates the angular coverage in theta and phi of a EMC module + void EmcXtalCoverage(Double_t & theta, Double_t & phi, Option_t * opt = kRadian) ; + // calculates the angular coverage in theta and phi of a + // single crystal in a EMC module + void ImpactOnEmc(const Double_t theta, const Double_t phi, Int_t & ModuleNumber, Double_t & x, Double_t & z) ; + // calculates the impact coordinates of a neutral particle + // emitted in direction theta and phi in ALICE void RelPosInModule(const Int_t * RelId, Float_t & y, Float_t & z) ; // gets the position of element (pad or Xtal) relative to // center of PHOS module void RelPosInAlice(const Int_t AbsId, TVector3 & pos) ; // gets the position of element (pad or Xtal) relative to diff --git a/PHOS/AliPHOSHit.h b/PHOS/AliPHOSHit.h index 397584c0c30..f784a06bed9 100644 --- a/PHOS/AliPHOSHit.h +++ b/PHOS/AliPHOSHit.h @@ -15,7 +15,10 @@ // --- AliRoot header files --- #include "AliHit.h" -#include + +// --- Standard library --- + +#include class AliPHOSHit : public AliHit { diff --git a/PHOS/AliPHOSPpsdRecPoint.cxx b/PHOS/AliPHOSPpsdRecPoint.cxx index 3f75e65131a..e67ae9f589a 100644 --- a/PHOS/AliPHOSPpsdRecPoint.cxx +++ b/PHOS/AliPHOSPpsdRecPoint.cxx @@ -19,10 +19,11 @@ ////////////////////////////////////////////////////////////////////////////// // --- ROOT system --- - +#include "TPad.h" // --- Standard library --- -#include +#include +#include // --- AliRoot header files --- @@ -44,7 +45,7 @@ AliPHOSPpsdRecPoint::AliPHOSPpsdRecPoint(void) //____________________________________________________________________________ AliPHOSPpsdRecPoint::~AliPHOSPpsdRecPoint(void) // dtor { - delete fDigitsList ; + //dtor } //____________________________________________________________________________ @@ -55,16 +56,22 @@ void AliPHOSPpsdRecPoint::AddDigit(AliDigitNew & digit, Float_t Energy) if ( fMulDigit >= fMaxDigit ) { // increase the size of the lists - int * tempo = new ( int[fMaxDigit*=2] ) ; + fMaxDigit*=2 ; + int * tempo = new ( int[fMaxDigit] ) ; Int_t index ; for ( index = 0 ; index < fMulDigit ; index++ ) tempo[index] = fDigitsList[index] ; - delete fDigitsList ; - fDigitsList = tempo ; + delete [] fDigitsList ; + fDigitsList = new ( int[fMaxDigit] ) ; + + for ( index = 0 ; index < fMulDigit ; index++ ) + fDigitsList[index] = tempo[index] ; + + delete [] tempo ; } - + fDigitsList[fMulDigit++] = (int) &digit ; fAmp += Energy ; } @@ -205,6 +212,31 @@ Bool_t AliPHOSPpsdRecPoint::GetUp() return up ; } +//______________________________________________________________________________ +void AliPHOSPpsdRecPoint::Paint(Option_t *) +{ +//*-*-*-*-*-*-*-*-*-*-*Paint this ALiRecPoint as a TMarker with its current attributes*-*-*-*-*-*-* +//*-* ============================================= + TVector3 pos(0.,0.,0.) ; + GetLocalPosition(pos) ; + Coord_t x = pos.X() ; + Coord_t y = pos.Z() ; + Color_t MarkerColor = 1 ; + Size_t MarkerSize = 1. ; + Style_t MarkerStyle = 2 ; + if (GetUp()) + MarkerStyle = 3 ; + + if (!gPad->IsBatch()) { + gVirtualX->SetMarkerColor(MarkerColor); + gVirtualX->SetMarkerSize (MarkerSize); + gVirtualX->SetMarkerStyle(MarkerStyle); + } + gPad->SetAttMarkerPS(MarkerColor,MarkerStyle,MarkerSize); + gPad->PaintPolyMarker(1,&x,&y,""); + + +} //____________________________________________________________________________ void AliPHOSPpsdRecPoint::Print(Option_t * option) @@ -212,13 +244,23 @@ void AliPHOSPpsdRecPoint::Print(Option_t * option) cout << "AliPHOSPpsdRecPoint: " << endl ; AliPHOSDigit * digit ; - Int_t iDigit; + AliPHOSGeometry * PHOSGeom = (AliPHOSGeometry *) fGeom ; + + Float_t xi ; + Float_t zi ; + Int_t relid[4] ; for(iDigit=0; iDigit +#include // --- AliRoot header files --- @@ -28,6 +31,8 @@ #include "AliPHOSDigit.h" #include "AliPHOSRecPoint.h" + + ClassImp(AliPHOSRecPoint) @@ -44,6 +49,112 @@ AliPHOSRecPoint::~AliPHOSRecPoint() { // dtor } +//____________________________________________________________________________ +Int_t AliPHOSRecPoint::DistancetoPrimitive(Int_t px, Int_t py) +{ +//*-*-*-*-*-*-*-*-*-*-*Compute distance from point px,py to a AliPHOSRecPoint considered as a Tmarker*-*-*-*-*-* +//*-* =========================================== +// Compute the closest distance of approach from point px,py to this marker. +// The distance is computed in pixels units. +// + + TVector3 pos(0.,0.,0.) ; + GetLocalPosition( pos) ; + Float_t x = pos.X() ; + Float_t y = pos.Z() ; + const Int_t kMaxDiff = 10; + Int_t pxm = gPad->XtoAbsPixel(x); + Int_t pym = gPad->YtoAbsPixel(y); + Int_t dist = (px-pxm)*(px-pxm) + (py-pym)*(py-pym); + + if (dist > kMaxDiff) return 9999; + return dist; +} +//___________________________________________________________________________ + void AliPHOSRecPoint::Draw(Option_t *option) + { +// //*-*-*-*-*-*-*-*-*-*-*Draw this AliPHOSRecPoint with its current attributes*-*-*-*-*-*-* +// //*-* + // assert(0==1); + AppendPad(option); + } + +//______________________________________________________________________________ +void AliPHOSRecPoint::ExecuteEvent(Int_t event, Int_t px, Int_t py) +{ +//*-*-*-*-*-*-*-*-*-*-*Execute action corresponding to one event*-*-*-* +//*-* ========================================= +// This member function is called when a AliPHOSRecPoint is clicked with the locator +// +// If Left button is clicked on AliPHOSRecPoint, the digits are switched on +// and switched off when the mouse button is released. +// + + // static Int_t pxold, pyold; + + static TGraph * DigitGraph = 0 ; + static TPaveText* ClusterText = 0 ; + + if (!gPad->IsEditable()) return; + + switch (event) { + + + case kButton1Down:{ + AliPHOSDigit * digit ; + AliPHOSGeometry * PHOSGeom = (AliPHOSGeometry *) fGeom ; + Int_t iDigit; + Int_t relid[4] ; + Float_t xi[fMulDigit] ; + Float_t zi[fMulDigit] ; + + for(iDigit=0; iDigitAbsToRelNumbering(digit->GetId(), relid) ; + PHOSGeom->RelPosInModule(relid, xi[iDigit], zi[iDigit]) ; + } + + if (!DigitGraph) { + DigitGraph = new TGraph(fMulDigit,xi,zi); + DigitGraph-> SetMarkerStyle(5) ; + DigitGraph-> SetMarkerSize(1.) ; + DigitGraph-> SetMarkerColor(1) ; + DigitGraph-> Draw("P") ; + } + if (!ClusterText) { + + TVector3 pos(0.,0.,0.) ; + GetLocalPosition(pos) ; + ClusterText = new TPaveText(pos.X()-10,pos.Z()+10,pos.X()+50,pos.Z()+35,"") ; + Text_t line1[40] ; + Text_t line2[40] ; + sprintf(line1,"Energy=%1.2f GeV",GetEnergy()) ; + sprintf(line2,"%d Digits",GetDigitsMultiplicity()) ; + ClusterText ->AddText(line1) ; + ClusterText ->AddText(line2) ; + ClusterText ->Draw(""); + } + gPad->Update() ; + Print() ; + } + + break; + + case kButton1Up: + if (DigitGraph) { + delete DigitGraph ; + DigitGraph = 0 ; + } + if (ClusterText) { + delete ClusterText ; + ClusterText = 0 ; + } + + break; + + } +} + //____________________________________________________________________________ Int_t AliPHOSRecPoint::GetPHOSMod() @@ -59,3 +170,24 @@ Int_t AliPHOSRecPoint::GetPHOSMod() fPHOSMod = relid[0]; return fPHOSMod ; } +//______________________________________________________________________________ +void AliPHOSRecPoint::Paint(Option_t *) +{ +//*-*-*-*-*-*-*-*-*-*-*Paint this ALiRecPoint as a TMarker with its current attributes*-*-*-*-*-*-* +//*-* ============================================= + TVector3 pos(0.,0.,0.) ; + GetLocalPosition(pos) ; + Coord_t x = pos.X() ; + Coord_t y = pos.Z() ; + Color_t MarkerColor = 1 ; + Size_t MarkerSize = 1. ; + Style_t MarkerStyle = 5 ; + + if (!gPad->IsBatch()) { + gVirtualX->SetMarkerColor(MarkerColor) ; + gVirtualX->SetMarkerSize (MarkerSize) ; + gVirtualX->SetMarkerStyle(MarkerStyle) ; + } + gPad->SetAttMarkerPS(MarkerColor,MarkerStyle,MarkerSize) ; + gPad->PaintPolyMarker(1,&x,&y,"") ; +} diff --git a/PHOS/AliPHOSRecPoint.h b/PHOS/AliPHOSRecPoint.h index 38f08cc3a95..b28019ed2f7 100644 --- a/PHOS/AliPHOSRecPoint.h +++ b/PHOS/AliPHOSRecPoint.h @@ -14,9 +14,13 @@ // --- ROOT system --- +#include "TMarker.h" +#include "TGraph.h" +#include "TPaveText.h" + // --- Standard library --- -#include "assert.h" +#include // --- AliRoot header files --- @@ -29,20 +33,24 @@ public: AliPHOSRecPoint() ; // ctor virtual ~AliPHOSRecPoint() ; // dtor - virtual void AddDigit(AliDigitNew & digit, Float_t Energy) = 0 ; - virtual Int_t GetPHOSMod(void) ; + virtual void AddDigit(AliDigitNew & digit, Float_t Energy) = 0 ; + virtual Int_t DistancetoPrimitive(Int_t px, Int_t py); + virtual void Draw(Option_t * option="") ; + virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py) ; + virtual Int_t GetPHOSMod(void) ; virtual Bool_t IsEmc(void){return kTRUE ;} - virtual void Print(Option_t * opt = "void") {} + virtual void Paint(Option_t * option=""); + virtual void Print(Option_t * opt = "void") {} virtual Int_t Compare(TObject * obj) { assert(0==1) ; } virtual Bool_t IsSortable() const { return kTRUE ; } protected: - - Int_t fPHOSMod; + + Int_t fPHOSMod ; public: - + ClassDef(AliPHOSRecPoint,1) }; diff --git a/PHOS/AliPHOSReconstructioner.cxx b/PHOS/AliPHOSReconstructioner.cxx index 98d5b553b5e..422eb29fdc7 100644 --- a/PHOS/AliPHOSReconstructioner.cxx +++ b/PHOS/AliPHOSReconstructioner.cxx @@ -41,7 +41,7 @@ AliPHOSReconstructioner::AliPHOSReconstructioner() //____________________________________________________________________________ AliPHOSReconstructioner::AliPHOSReconstructioner(AliPHOSClusterizer & Clusterizer, AliPHOSTrackSegmentMaker & Tracker) { - fClusterizer = &Clusterizer ; + fClusterizer = &Clusterizer ; fTrackSegmentMaker = &Tracker ; } @@ -49,12 +49,16 @@ AliPHOSReconstructioner::AliPHOSReconstructioner(AliPHOSClusterizer & Clusterize AliPHOSReconstructioner::~AliPHOSReconstructioner() { // dtor + fClusterizer = 0 ; + fTrackSegmentMaker = 0 ; } //____________________________________________________________________________ - void AliPHOSReconstructioner:: Make(TClonesArray * dl, RecPointsList * emccl, RecPointsList * ppsdl, TrackSegmentsList * trsl) +void AliPHOSReconstructioner::Make(TClonesArray * dl, RecPointsList * emccl, RecPointsList * ppsdl, TrackSegmentsList * trsl) { + cout << "Make1" << endl; fClusterizer->MakeClusters(dl, emccl, ppsdl); - - fTrackSegmentMaker->MakeTrackSegments(dl,emccl,ppsdl,trsl) ; + cout << "Make2" << endl; + fTrackSegmentMaker->MakeTrackSegments(dl, emccl, ppsdl, trsl) ; + cout << "Make3" << endl; } diff --git a/PHOS/AliPHOSReconstructioner.h b/PHOS/AliPHOSReconstructioner.h index f3fb4ec5c31..9c88696de05 100644 --- a/PHOS/AliPHOSReconstructioner.h +++ b/PHOS/AliPHOSReconstructioner.h @@ -36,9 +36,8 @@ public: private: - AliPHOSClusterizer * fClusterizer ; // Method of clusterization - - AliPHOSTrackSegmentMaker * fTrackSegmentMaker ; // + AliPHOSClusterizer * fClusterizer ; // Method for clusterization + AliPHOSTrackSegmentMaker * fTrackSegmentMaker ; // Method for track segments finding public: diff --git a/PHOS/AliPHOSTrackSegment.cxx b/PHOS/AliPHOSTrackSegment.cxx index f1e871bcb26..feb9b135065 100644 --- a/PHOS/AliPHOSTrackSegment.cxx +++ b/PHOS/AliPHOSTrackSegment.cxx @@ -21,10 +21,11 @@ // --- ROOT system --- #include "TVector3.h" +#include "TPad.h" // --- Standard library --- -#include "iostream.h" +#include // --- AliRoot header files --- @@ -57,6 +58,82 @@ AliPHOSTrackSegment::~AliPHOSTrackSegment() // dtor // fPpsdLow.Delete() ; } +//____________________________________________________________________________ +Int_t AliPHOSTrackSegment::DistancetoPrimitive(Int_t px, Int_t py) +{ +//*-*-*-*-*-*-*-*-*-*-*Compute distance from point px,py to a AliPHOSTrackSegment considered as a Tmarker*-*-*-*-*-* +//*-* =========================================== +// Compute the closest distance of approach from point px,py to this marker. +// The distance is computed in pixels units. +// + + TVector3 pos(0.,0.,0.) ; + fEmcRecPoint->GetLocalPosition( pos) ; + Float_t x = pos.X() ; + Float_t y = pos.Z() ; + const Int_t kMaxDiff = 10; + Int_t pxm = gPad->XtoAbsPixel(x); + Int_t pym = gPad->YtoAbsPixel(y); + Int_t dist = (px-pxm)*(px-pxm) + (py-pym)*(py-pym); + + if (dist > kMaxDiff) return 9999; + return dist; +} + +//___________________________________________________________________________ + void AliPHOSTrackSegment::Draw(Option_t *option) + { +// //*-*-*-*-*-*-*-*-*-*-*Draw this AliPHOSTrackSegment with its current attributes*-*-*-*-*-*-* +// //*-* + // assert(0==1); + AppendPad(option); + } + +//______________________________________________________________________________ +void AliPHOSTrackSegment::ExecuteEvent(Int_t event, Int_t px, Int_t py) +{ +//*-*-*-*-*-*-*-*-*-*-*Execute action corresponding to one event*-*-*-* +//*-* ========================================= +// This member function is called when a AliPHOSTrackSegment is clicked with the locator +// +// If Left button is clicked on AliPHOSRecPoint, the digits are switched on +// and switched off when the mouse button is released. +// + static TPaveText* TrackSegmentText = 0 ; + + if (!gPad->IsEditable()) return; + + switch (event) { + + case kButton1Down:{ + + if (!TrackSegmentText) { + + TVector3 pos(0.,0.,0.) ; + fEmcRecPoint->GetLocalPosition(pos) ; + TrackSegmentText = new TPaveText(pos.X()-10,pos.Z()+10,pos.X()+50,pos.Z()+35,"") ; + Text_t line1[40] ; + if (GetPartType() == 0 ) sprintf(line1,"PHOTON") ; + if (GetPartType() == 1 ) sprintf(line1,"NEUTRAL HADRON") ; + if (GetPartType() == 2 ) sprintf(line1,"CHARGED HADRON") ; + if (GetPartType() == 3 ) sprintf(line1,"ELECTRON") ; + TrackSegmentText ->AddText(line1) ; + TrackSegmentText ->Paint(""); + } + } + + break; + + case kButton1Up: + if (TrackSegmentText) { + delete TrackSegmentText ; + TrackSegmentText = 0 ; + } + break; + } +} + + //____________________________________________________________________________ Float_t AliPHOSTrackSegment::GetDistanceInPHOSPlane() { @@ -152,6 +229,34 @@ void AliPHOSTrackSegment::GetPosition( TVector3 & pos ) fEmcRecPoint->GetGlobalPosition(pos, Dummy) ; } +//______________________________________________________________________________ +void AliPHOSTrackSegment::Paint(Option_t *) +{ +//*-*-*-*-*-*-*-*-*-*-*Paint this ALiPHOSTrackSegment as a TMarker with its current attributes*-*-*-*-*-*-* +//*-* ============================================= + TVector3 pos(0.,0.,0.) ; + fEmcRecPoint->GetLocalPosition(pos) ; + Coord_t x = pos.X() ; + Coord_t y = pos.Z() ; + Color_t MarkerColor = 1 ; + Size_t MarkerSize = 1. ; + Style_t MarkerStyle = 29 ; + + if (GetPartType() == 0 ) MarkerStyle = 20 ; + if (GetPartType() == 1 ) MarkerStyle = 21 ; + if (GetPartType() == 2 ) MarkerStyle = 22 ; + if (GetPartType() == 3 ) MarkerStyle = 23 ; + + if (!gPad->IsBatch()) { + gVirtualX->SetMarkerColor(MarkerColor) ; + gVirtualX->SetMarkerSize (MarkerSize) ; + gVirtualX->SetMarkerStyle(MarkerStyle) ; + } + gPad->SetAttMarkerPS(MarkerColor,MarkerStyle,MarkerSize) ; + gPad->PaintPolyMarker(1,&x,&y,"") ; +} + + //____________________________________________________________________________ void AliPHOSTrackSegment::Print() { diff --git a/PHOS/AliPHOSTrackSegment.h b/PHOS/AliPHOSTrackSegment.h index 1ae2e5594c3..7a78504beee 100644 --- a/PHOS/AliPHOSTrackSegment.h +++ b/PHOS/AliPHOSTrackSegment.h @@ -36,11 +36,17 @@ public: AliPHOSPpsdRecPoint * PpsdLow ) ; virtual ~AliPHOSTrackSegment() ; // dtor + virtual Int_t DistancetoPrimitive(Int_t px, Int_t py); + virtual void Draw(Option_t * option="") ; + virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py); Int_t GetPartType() ; // Returns 0 - gamma, 1 - e+, e- ; 2 - neutral hadron ; 3 - charged hadron - Float_t GetEnergy(){ return fEmcRecPoint->GetTotalEnergy() ;} // Returs energy in EMC + Float_t GetEnergy(){ return fEmcRecPoint->GetTotalEnergy() ;} // Returs energy in EMC + Float_t GetDistanceInPHOSPlane(void) ; // computes in PHOS plane the relative position between EMC and PPSD clusters + virtual Int_t GetPHOSMod(void) {return fEmcRecPoint->GetPHOSMod(); } Bool_t GetMomentumDirection( TVector3 & dir ) ; // True if determined void GetPosition( TVector3 & pos ) ; // Returns positions of hits + virtual void Paint(Option_t * option=""); void Print() ; void SetDispersionCutOff(Float_t Dcut) {fCutOnDispersion = Dcut ; } diff --git a/PHOS/AliPHOSTrackSegmentMaker.cxx b/PHOS/AliPHOSTrackSegmentMaker.cxx index bcb4b3819bb..9cd74f1d3d0 100644 --- a/PHOS/AliPHOSTrackSegmentMaker.cxx +++ b/PHOS/AliPHOSTrackSegmentMaker.cxx @@ -25,7 +25,7 @@ // --- Standard library --- -#include "iostream.h" +#include // --- AliRoot header files --- diff --git a/PHOS/AliPHOSTrackSegmentMakerv1.cxx b/PHOS/AliPHOSTrackSegmentMakerv1.cxx index f5e1f5204c5..fc531e801bc 100644 --- a/PHOS/AliPHOSTrackSegmentMakerv1.cxx +++ b/PHOS/AliPHOSTrackSegmentMakerv1.cxx @@ -14,19 +14,21 @@ **************************************************************************/ //_________________________________________________________________________ -// A brief description of the class -//*-- Author : Yves Schutz SUBATECH +// Algorithm class to construct track segments connection RecPoints in +// EMCA and Ppsd. Unfolds also the clusters in EMCA. +//*-- Author : D. Peressounko SUBATECH ////////////////////////////////////////////////////////////////////////////// // --- ROOT system --- #include "TObjArray.h" #include "TClonesArray.h" -#include "TMinuit.h" +#include "TObjectTable.h" // --- Standard library --- -#include "iostream.h" +#include +#include // --- AliRoot header files --- @@ -36,113 +38,140 @@ #include "AliPHOSv0.h" #include "AliRun.h" +extern void UnfoldingChiSquare(Int_t &NPar, Double_t *Grad, Double_t & fret, Double_t *x, Int_t iflag) ; + ClassImp( AliPHOSTrackSegmentMakerv1) //____________________________________________________________________________ - AliPHOSTrackSegmentMakerv1:: AliPHOSTrackSegmentMakerv1() // ctor + AliPHOSTrackSegmentMakerv1::AliPHOSTrackSegmentMakerv1() { + // ctor fR0 = 4. ; AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ; //clusters are sorted in "rows" and "columns" of width geom->GetCrystalSize(0), fDelta = fR0 + geom->GetCrystalSize(0) ; + fMinuit = new TMinuit(100) ; } +//____________________________________________________________________________ + AliPHOSTrackSegmentMakerv1::~AliPHOSTrackSegmentMakerv1() +{ + // dtor + delete fMinuit ; +} //____________________________________________________________________________ Bool_t AliPHOSTrackSegmentMakerv1::FindFit(AliPHOSEmcRecPoint * emcRP, int * maxAt, Float_t * maxAtEnergy, - Int_t NPar, Float_t * FitParametres) -{ //Calls TMinuit for fitting cluster with several maxima - + Int_t NPar, Float_t * FitParameters) +{ + // gObjectTable->Print() ; + // Calls TMinuit for fitting cluster with several maxima AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ; - TMinuit *gMinuit = new TMinuit(NPar); //initialize TMinuit with a maximum of 5 params - gMinuit->SetPrintLevel(-1) ; //No PRIntout - gMinuit->SetFCN(UnfoldingChiSquare ); //To set the address of the minimization function - gMinuit->SetObjectFit(emcRP) ; //To tranfer pointer to UnfoldingChiSquare + assert( NPar < 100 ) ; - //filling initial values for fit parameters + gMinuit->SetPrintLevel(-1) ; // No Printout + gMinuit->SetFCN(UnfoldingChiSquare) ; // To set the address of the minimization function + gMinuit->SetObjectFit(emcRP) ; // To tranfer pointer to UnfoldingChiSquare + + // filling initial values for fit parameters AliPHOSDigit * digit ; - Int_t ierflg = 0; - Int_t index = 0 ; + + Int_t ierflg = 0; + Int_t index = 0 ; Int_t NDigits = (Int_t) NPar / 3 ; + Int_t iDigit ; - for(iDigit = 0 ; iDigit < NDigits ; iDigit ++){ + + + for(iDigit = 0 ; iDigit < NDigits ; iDigit++){ digit = (AliPHOSDigit *) maxAt[iDigit]; Int_t RelId[4] ; Float_t x ; Float_t z ; - geom->AbsToRelNumbering(digit->GetId(),RelId) ; - geom->RelPosInModule(RelId,x,z) ; + geom->AbsToRelNumbering(digit->GetId(), RelId) ; + geom->RelPosInModule(RelId, x, z) ; Float_t Energy = maxAtEnergy[iDigit] ; - gMinuit->mnparm(index++, " ", x, 0.1, 0, 0, ierflg) ; + gMinuit->mnparm(index, "x", x, 0.1, 0, 0, ierflg) ; + index++ ; if(ierflg != 0){ cout << "PHOS Unfolding> Unable to set initial value for fit procedure : x = " << x << endl ; return kFALSE; } - gMinuit->mnparm(index++, " ", z, 0.1, 0, 0, ierflg) ; + gMinuit->mnparm(index, "z", z, 0.1, 0, 0, ierflg) ; + index++ ; if(ierflg != 0){ cout << "PHOS Unfolding> Unable to set initial value for fit procedure : z = " << z << endl ; return kFALSE; } - gMinuit->mnparm(index++, " ", Energy , 0.05*Energy, 0., 4.*Energy, ierflg) ; + gMinuit->mnparm(index, "Energy", Energy , 0.05*Energy, 0., 4.*Energy, ierflg) ; + index++ ; if(ierflg != 0){ cout << "PHOS Unfolding> Unable to set initial value for fit procedure : Energy = " << Energy << endl ; return kFALSE; } } - Double_t p0=0.1; //"Tolerance" Evaluation stops when EDM = 0.0001*p0 ; The number of function call slightly - //depends on it. - Double_t p1 = 1.; - - gMinuit->mnexcm("SET STR", 0, 0, ierflg) ; //force TMinuit to reduce function calls - gMinuit->mnexcm("SET GRA", &p1, 1, ierflg) ; //force TMinuit to use my gradient + Double_t p0 = 0.1 ; // "Tolerance" Evaluation stops when EDM = 0.0001*p0 ; The number of function call slightly + // depends on it. + Double_t p1 = 1.0 ; + Double_t p2 = 0.0 ; + + gMinuit->mnexcm("SET STR", &p2, 0, ierflg) ; // force TgMinuit to reduce function calls + gMinuit->mnexcm("SET GRA", &p1, 1, ierflg) ; // force TMinuit to use my gradient gMinuit->SetMaxIterations(5); - gMinuit->mnexcm("SET NOW", 0 , 0, ierflg) ; //No Warnings - gMinuit->mnexcm("MIGRAD", &p0, 0, ierflg); // minimize - if(ierflg == 4){ //Minimum not found - cout << "PHOS Unfolding> Fit not converged, cluster abondoned "<< endl ; + gMinuit->mnexcm("SET NOW", &p2 , 0, ierflg) ; // No Warnings + gMinuit->mnexcm("MIGRAD", &p0, 0, ierflg) ; // minimize + if(ierflg == 4){ // Minimum not found + cout << "PHOS Unfolding> Fit not converged, cluster abandoned "<< endl ; return kFALSE ; } for(index = 0; index < NPar; index++){ Double_t err ; Double_t val ; - gMinuit->GetParameter(index, val, err) ; //Returns value and error of parameter index - FitParametres[index] = val ; + gMinuit->GetParameter(index, val, err) ; // Returns value and error of parameter index + FitParameters[index] = val ; } - gMinuit->Delete() ; return kTRUE; + } + //____________________________________________________________________________ void AliPHOSTrackSegmentMakerv1::FillOneModule(DigitsList * Dl, RecPointsList * emcIn, TObjArray * emcOut, RecPointsList * ppsdIn, TObjArray * ppsdOutUp, - TObjArray * ppsdOutLow, Int_t &PHOSMod, Int_t & emcStopedAt, + TObjArray * ppsdOutLow, Int_t & PHOSMod, Int_t & emcStopedAt, Int_t & ppsdStopedAt) -{// Unfold clusters and fill xxxOut arrais with clusters from ome PHOS modeule - AliPHOSEmcRecPoint * emcRecPoint ; +{ + // Unfold clusters and fill xxxOut arrays with clusters from one PHOS module + + AliPHOSEmcRecPoint * emcRecPoint ; AliPHOSPpsdRecPoint * ppsdRecPoint ; Int_t index ; - + cout << "Fill 1" << endl ; Int_t NemcUnfolded = emcIn->GetEntries() ; for(index = emcStopedAt; index < NemcUnfolded; index++){ - emcRecPoint = (AliPHOSEmcRecPoint *) (*emcIn)[index] ; - + cout << "Fill 2" << endl ; + if(emcRecPoint->GetPHOSMod() != PHOSMod ) - break ; + break ; + Int_t NMultipl = emcRecPoint->GetMultiplicity() ; int maxAt[NMultipl] ; Float_t maxAtEnergy[NMultipl] ; - Int_t Nmax = emcRecPoint->GetNumberOfLocalMax(maxAt,maxAtEnergy) ; + Int_t Nmax = emcRecPoint->GetNumberOfLocalMax(maxAt, maxAtEnergy) ; + + - if(Nmax<=1) // if cluster is very flat, so that no prononsed maximum, then Nmax = 0 + if(Nmax <= 1) // if cluster is very flat, so that no prononsed maximum, then Nmax = 0 emcOut->Add(emcRecPoint) ; else { UnfoldClusters(Dl, emcIn, emcRecPoint, Nmax, maxAt, maxAtEnergy, emcOut) ; emcIn->Remove(emcRecPoint); + cout << "Fill 3" << endl ; emcIn->Compress() ; NemcUnfolded-- ; index-- ; @@ -152,7 +181,8 @@ void AliPHOSTrackSegmentMakerv1::FillOneModule(DigitsList * Dl, RecPointsList * for(index = ppsdStopedAt; index < ppsdIn->GetEntries(); index++){ ppsdRecPoint = (AliPHOSPpsdRecPoint *) (*ppsdIn)[index] ; - if(ppsdRecPoint->GetPHOSMod() != PHOSMod ) break ; + if(ppsdRecPoint->GetPHOSMod() != PHOSMod ) + break ; if(ppsdRecPoint->GetUp() ) ppsdOutUp->Add(ppsdRecPoint) ; else @@ -272,6 +302,8 @@ void AliPHOSTrackSegmentMakerv1::MakePairs(TObjArray * EmcRecPoints, TObjArray AliPHOSPpsdRecPoint * ppsdLow ; AliPHOSPpsdRecPoint * ppsdUp ; + AliPHOSRecPoint * NullPointer = 0 ; + while ( (linkLow = (AliPHOSLink *)nextLow() ) ){ emc = (AliPHOSEmcRecPoint *) EmcRecPoints->At(linkLow->GetEmc()) ; ppsdLow = (AliPHOSPpsdRecPoint *) PpsdRecPointsLow->At(linkLow->GetPpsd()) ; @@ -289,11 +321,11 @@ void AliPHOSTrackSegmentMakerv1::MakePairs(TObjArray * EmcRecPoints, TObjArray nextUp.Reset(); AliPHOSTrackSegment * subtr = new AliPHOSTrackSegment(emc, ppsdUp, ppsdLow ) ; trsl->Add(subtr) ; - EmcRecPoints->RemoveAt(linkLow->GetEmc()) ; - PpsdRecPointsLow->RemoveAt(linkLow->GetPpsd()) ; + EmcRecPoints->AddAt(NullPointer,linkLow->GetEmc()) ; + PpsdRecPointsLow->AddAt(NullPointer,linkLow->GetPpsd()) ; if(ppsdUp) - PpsdRecPointsUp->RemoveAt(linkUp->GetPpsd()) ; + PpsdRecPointsUp->AddAt(NullPointer,linkUp->GetPpsd()) ; } // if NLocMax } @@ -302,8 +334,8 @@ void AliPHOSTrackSegmentMakerv1::MakePairs(TObjArray * EmcRecPoints, TObjArray nextEmc.Reset() ; while( (emc = (AliPHOSEmcRecPoint*)nextEmc()) ){ //to create pairs if no PpsdLow - ppsdLow = NULL ; - ppsdUp = NULL ; + ppsdLow = 0 ; + ppsdUp = 0 ; while ( (linkUp = (AliPHOSLink *)nextUp() ) ){ @@ -317,8 +349,7 @@ void AliPHOSTrackSegmentMakerv1::MakePairs(TObjArray * EmcRecPoints, TObjArray trsl->Add(subtr) ; if(ppsdUp) - PpsdRecPointsUp->RemoveAt(linkUp->GetPpsd()) ; - + PpsdRecPointsUp->AddAt(NullPointer,linkUp->GetPpsd()) ; } } @@ -327,15 +358,15 @@ void AliPHOSTrackSegmentMakerv1::MakePairs(TObjArray * EmcRecPoints, TObjArray void AliPHOSTrackSegmentMakerv1::MakeTrackSegments(DigitsList * DL, RecPointsList * emcl, RecPointsList * ppsdl, TrackSegmentsList * trsl) { - //main function, does the job + // main function, does the job - Int_t PHOSMod = 1 ; - Int_t emcStopedAt = 0 ; + Int_t PHOSMod = 1 ; + Int_t emcStopedAt = 0 ; Int_t ppsdStopedAt = 0 ; - TObjArray * EmcRecPoints = new TObjArray(100) ; //these arrays keeps pointers - TObjArray * PpsdRecPointsUp = new TObjArray(100) ; //on RecPoints, which are - TObjArray * PpsdRecPointsLow = new TObjArray(100) ; //kept in TClonesArray's emcl and ppsdl + TObjArray * EmcRecPoints = new TObjArray(100) ; // these arrays keep pointers + TObjArray * PpsdRecPointsUp = new TObjArray(100) ; // to RecPoints, which are + TObjArray * PpsdRecPointsLow = new TObjArray(100) ; // kept in TClonesArray's emcl and ppsdl TClonesArray * LinkLowArray = new TClonesArray("AliPHOSLink", 100); @@ -344,23 +375,46 @@ void AliPHOSTrackSegmentMakerv1::MakeTrackSegments(DigitsList * DL, RecPointsLi AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ; while(PHOSMod <= geom->GetNModules() ){ + + cout << PHOSMod << " Track1 " << endl ; FillOneModule(DL, emcl, EmcRecPoints, ppsdl, PpsdRecPointsUp, PpsdRecPointsLow, PHOSMod , emcStopedAt, ppsdStopedAt) ; - - MakeLinks(EmcRecPoints,PpsdRecPointsUp, PpsdRecPointsLow, LinkLowArray, LinkUpArray) ; + cout << PHOSMod << " Track2 " << endl ; + MakeLinks(EmcRecPoints, PpsdRecPointsUp, PpsdRecPointsLow, LinkLowArray, LinkUpArray) ; - MakePairs(EmcRecPoints,PpsdRecPointsUp, PpsdRecPointsLow, LinkLowArray, LinkUpArray, trsl) ; + cout << PHOSMod << " Track3 " << endl ; + MakePairs(EmcRecPoints, PpsdRecPointsUp, PpsdRecPointsLow, LinkLowArray, LinkUpArray, trsl) ; EmcRecPoints->Clear() ; + PpsdRecPointsUp->Clear() ; + PpsdRecPointsLow->Clear() ; - LinkUpArray->Delete(); - LinkLowArray->Delete(); + + LinkUpArray->Clear(); + + LinkLowArray->Clear(); + } + delete EmcRecPoints ; + EmcRecPoints = 0 ; + + delete PpsdRecPointsUp ; + PpsdRecPointsUp = 0 ; + + delete PpsdRecPointsLow ; + PpsdRecPointsLow = 0 ; + + delete LinkUpArray ; + LinkUpArray = 0 ; + + delete LinkLowArray ; + LinkLowArray = 0 ; } //____________________________________________________________________________ -Double_t AliPHOSTrackSegmentMakerv1::ShowerShape(Double_t r){ +Double_t AliPHOSTrackSegmentMakerv1::ShowerShape(Double_t r) +{ // If you change this function, change also gradiend evaluation in ChiSquare() Double_t r4 = r*r*r*r ; Double_t r295 = TMath::Power(r, 2.95) ; @@ -372,13 +426,14 @@ Double_t AliPHOSTrackSegmentMakerv1::ShowerShape(Double_t r){ void AliPHOSTrackSegmentMakerv1::UnfoldClusters(DigitsList * DL, RecPointsList * emcIn, AliPHOSEmcRecPoint * iniEmc, Int_t Nmax, int * maxAt, Float_t * maxAtEnergy, TObjArray * emcList) { - //fits cluster with Nmax overlapping showers + // fits cluster with Nmax overlapping showers Int_t NPar = 3 * Nmax ; Float_t FitParameters[NPar] ; AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ; - - if( !FindFit(iniEmc, maxAt, maxAtEnergy, NPar, FitParameters) ) //Fit failed, return and remove cluster + + Bool_t rv = FindFit(iniEmc, maxAt, maxAtEnergy, NPar, FitParameters) ; + if( !rv ) // Fit failed, return and remove cluster return ; Float_t xDigit ; @@ -440,7 +495,7 @@ void AliPHOSTrackSegmentMakerv1::UnfoldClusters(DigitsList * DL, RecPointsList Distance = TMath::Sqrt(Distance) ; Ratio = Epar * ShowerShape(Distance) / Efit[iDigit] ; eDigit = emcEnergies[iDigit] * Ratio ; - emcRP->AddDigit( *digit,eDigit ) ; + emcRP->AddDigit( *digit, eDigit ) ; } emcList->Add(emcRP) ; @@ -448,26 +503,28 @@ void AliPHOSTrackSegmentMakerv1::UnfoldClusters(DigitsList * DL, RecPointsList } } //______________________________________________________________________________ -void AliPHOSTrackSegmentMakerv1::UnfoldingChiSquare(Int_t &NPar, Double_t *Grad, Double_t & fret, Double_t *x, Int_t iflag) +void UnfoldingChiSquare(Int_t &NPar, Double_t *Grad, Double_t & fret, Double_t *x, Int_t iflag) { -// NUmber of paramters, Gradient , Chi squared, parameters, what to do + +// Number of paramters, Gradient , Chi squared, parameters, what to do + AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ; - AliPHOSTrackSegmentMakerv1 TrS ; - AliPHOSEmcRecPoint * emcRP = (AliPHOSEmcRecPoint *) gMinuit->GetObjectFit() ; //EmcRecPoint to fit + AliPHOSEmcRecPoint * emcRP = (AliPHOSEmcRecPoint *) gMinuit->GetObjectFit() ; // EmcRecPoint to fit int * emcDigits = emcRP->GetDigitsList() ; Float_t * emcEnergies = emcRP->GetEnergiesList() ; fret = 0. ; Int_t iparam ; - if(iflag==2) - for(iparam = 0 ; iparam < NPar ; iparam ++) - Grad[iparam] = 0 ; //Will evaluate gradient - + if(iflag == 2) + for(iparam = 0 ; iparam < NPar ; iparam++) + Grad[iparam] = 0 ; // Will evaluate gradient + Double_t Efit ; - + AliPHOSDigit * digit ; Int_t iDigit = 0 ; + while ( (digit = (AliPHOSDigit *)emcDigits[iDigit] )){ Int_t RelId[4] ; Float_t xDigit ; @@ -475,46 +532,52 @@ void AliPHOSTrackSegmentMakerv1::UnfoldingChiSquare(Int_t &NPar, Double_t *Grad geom->AbsToRelNumbering(digit->GetId(), RelId) ; geom->RelPosInModule(RelId, xDigit, zDigit) ; - if(iflag == 2){ //calculate gradient - Int_t iParam = 0 ; - Efit = 0 ; - while(iParam < NPar ){ - Double_t Distance = TMath::Sqrt( (xDigit - x[iParam]) * (xDigit - x[iParam]) + - (zDigit - x[++iParam]) * (zDigit - x[iParam]) ) ; - Efit += x[++iParam] * TrS.ShowerShape(Distance) ; - iParam++ ; - } - Double_t sum = 2. * (Efit - emcEnergies[iDigit]) / emcEnergies[iDigit] ; //Here we assume, that sigma = sqrt(E) - iParam = 0 ; - while(iParam < NPar ){ - Double_t xpar = x[iParam] ; - Double_t zpar = x[iParam+1] ; - Double_t Epar = x[iParam+2] ; - Double_t dr = TMath::Sqrt( (xDigit - xpar) * (xDigit - xpar) + (zDigit - zpar) * (zDigit - zpar) ); - Double_t shape = sum * TrS.ShowerShape(dr) ; - Double_t r4 = dr*dr*dr*dr ; - Double_t r295 = TMath::Power(dr,2.95) ; - Double_t deriv =-4. * dr*dr * ( 2.32 / ( (2.32 + 0.26 * r4) * (2.32 + 0.26 * r4) ) + - 0.0316 * (1. + 0.0171 * r295) / ( ( 1. + 0.0652 * r295) * (1. + 0.0652 * r295) ) ) ; - - Grad[iParam++] += Epar * shape * deriv * (xpar - xDigit) ; // Derivative over x - Grad[iParam++] += Epar * shape * deriv * (zpar - zDigit) ; // Derivative over z - Grad[iParam++] += shape ; // Derivative over energy - } - } - Efit = 0; - iparam = 0 ; - while(iparam < NPar ){ - Double_t xpar = x[iparam] ; - Double_t zpar = x[iparam+1] ; - Double_t Epar = x[iparam+2] ; - iparam += 3 ; - Double_t Distance = (xDigit - xpar) * (xDigit - xpar) + (zDigit - zpar) * (zDigit - zpar) ; - Distance = TMath::Sqrt(Distance) ; - Efit += Epar * TrS.ShowerShape(Distance) ; - } - fret += (Efit-emcEnergies[iDigit])*(Efit-emcEnergies[iDigit])/emcEnergies[iDigit] ; - //Here we assume, that sigma = sqrt(E) - iDigit++ ; + if(iflag == 2){ // calculate gradient + Int_t iParam = 0 ; + Efit = 0 ; + while(iParam < NPar ){ + Double_t Distance = (xDigit - x[iParam]) * (xDigit - x[iParam]) ; + iParam++ ; + Distance += (zDigit - x[iParam]) * (zDigit - x[iParam]) ; + Distance = TMath::Sqrt( Distance ) ; + iParam++ ; + Efit += x[iParam] * AliPHOSTrackSegmentMakerv1::ShowerShape(Distance) ; + iParam++ ; + } + Double_t sum = 2. * (Efit - emcEnergies[iDigit]) / emcEnergies[iDigit] ; // Here we assume, that sigma = sqrt(E) + iParam = 0 ; + while(iParam < NPar ){ + Double_t xpar = x[iParam] ; + Double_t zpar = x[iParam+1] ; + Double_t Epar = x[iParam+2] ; + Double_t dr = TMath::Sqrt( (xDigit - xpar) * (xDigit - xpar) + (zDigit - zpar) * (zDigit - zpar) ); + Double_t shape = sum * AliPHOSTrackSegmentMakerv1::ShowerShape(dr) ; + Double_t r4 = dr*dr*dr*dr ; + Double_t r295 = TMath::Power(dr,2.95) ; + Double_t deriv =-4. * dr*dr * ( 2.32 / ( (2.32 + 0.26 * r4) * (2.32 + 0.26 * r4) ) + + 0.0316 * (1. + 0.0171 * r295) / ( ( 1. + 0.0652 * r295) * (1. + 0.0652 * r295) ) ) ; + + Grad[iParam] += Epar * shape * deriv * (xpar - xDigit) ; // Derivative over x + iParam++ ; + Grad[iParam] += Epar * shape * deriv * (zpar - zDigit) ; // Derivative over z + iParam++ ; + Grad[iParam] += shape ; // Derivative over energy + iParam++ ; + } + } + Efit = 0; + iparam = 0 ; + while(iparam < NPar ){ + Double_t xpar = x[iparam] ; + Double_t zpar = x[iparam+1] ; + Double_t Epar = x[iparam+2] ; + iparam += 3 ; + Double_t Distance = (xDigit - xpar) * (xDigit - xpar) + (zDigit - zpar) * (zDigit - zpar) ; + Distance = TMath::Sqrt(Distance) ; + Efit += Epar * AliPHOSTrackSegmentMakerv1::ShowerShape(Distance) ; + } + fret += (Efit-emcEnergies[iDigit])*(Efit-emcEnergies[iDigit])/emcEnergies[iDigit] ; + // Here we assume, that sigma = sqrt(E) + iDigit++ ; } } diff --git a/PHOS/AliPHOSTrackSegmentMakerv1.h b/PHOS/AliPHOSTrackSegmentMakerv1.h index 8826c35afca..f963d7c8184 100644 --- a/PHOS/AliPHOSTrackSegmentMakerv1.h +++ b/PHOS/AliPHOSTrackSegmentMakerv1.h @@ -22,14 +22,14 @@ #include "AliPHOSEmcRecPoint.h" #include "AliPHOSPpsdRecPoint.h" #include "AliPHOSTrackSegmentMaker.h" - +#include "TMinuit.h" class AliPHOSTrackSegmentMakerv1 : public AliPHOSTrackSegmentMaker { public: AliPHOSTrackSegmentMakerv1() ; - virtual ~ AliPHOSTrackSegmentMakerv1(){} // dtor + virtual ~ AliPHOSTrackSegmentMakerv1() ; // dtor Bool_t FindFit(AliPHOSEmcRecPoint * emcRP, int * MaxAt, Float_t * maxAtEnergy, Int_t NPar, Float_t * FitParametres) ; //Used in UnfoldClusters, calls TMinuit @@ -51,18 +51,16 @@ public: void SetMaxEmcPpsdDistance(Float_t r){ fR0 = r ;} //Radius within which we look for ppsd cluster - Double_t ShowerShape(Double_t r) ; //Shape of shower used in unfolding + static Double_t ShowerShape(Double_t r) ; // Shape of shower used in unfolding; class member function (not object member function) void UnfoldClusters(DigitsList * DL, RecPointsList * emcIn, AliPHOSEmcRecPoint * iniEmc, Int_t Nmax, - int * maxAt, Float_t * maxAtEnergy, TObjArray * emclist) ; //Unfolds overlaping clusters using TMinuit packadge - - void static UnfoldingChiSquare(Int_t &NPar, Double_t *Grad, Double_t & fret, Double_t *x, Int_t iflag); //used in TMinuit - + int * maxAt, Float_t * maxAtEnergy, TObjArray * emclist) ; //Unfolds overlaping clusters using TMinuit package private: - Float_t fDelta ; // parameter used for sorting - Float_t fR0 ; // Maximal distance between EMC and PPSD clusters of one Track Segment in module plane + Float_t fDelta ; // parameter used for sorting + Float_t fR0 ; // Maximal distance between EMC and PPSD clusters of one Track Segment in module plane + TMinuit * fMinuit ; // Minuit object needed by cluster unfolding public: diff --git a/PHOS/AliPHOSv0.cxx b/PHOS/AliPHOSv0.cxx index f77a423bb7f..da103c33f69 100644 --- a/PHOS/AliPHOSv0.cxx +++ b/PHOS/AliPHOSv0.cxx @@ -25,11 +25,11 @@ // --- Standard library --- -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include // --- AliRoot header files --- @@ -67,10 +67,6 @@ AliPHOSv0::AliPHOSv0(const char *name, const char *title): fDigits = new TClonesArray("AliPHOSDigit",100) ; fTmpHits= new TClonesArray("AliPHOSHit",100) ; - assert ( fHits != 0 ) ; - assert ( fDigits != 0 ) ; - assert ( fTmpHits != 0 ) ; - fNTmpHits = fNhits = 0 ; fIshunt = 1 ; // All hits are associated with primary particles @@ -84,7 +80,7 @@ AliPHOSv0::AliPHOSv0(const char *name, const char *title): cout << "AliPHOSv0 : PHOS geometry initialization failed !" << endl ; } //____________________________________________________________________________ -AliPHOSv0::AliPHOSv0(AliPHOSReconstructioner& Reconstructioner, const char *name, const char *title): +AliPHOSv0::AliPHOSv0(AliPHOSReconstructioner & Reconstructioner, const char *name, const char *title): AliPHOS(name,title) { @@ -101,10 +97,6 @@ AliPHOSv0::AliPHOSv0(AliPHOSReconstructioner& Reconstructioner, const char *nam fDigits = new TClonesArray("AliPHOSDigit",100) ; fTmpHits= new TClonesArray("AliPHOSHit",100) ; - assert ( fHits != 0 ) ; - assert ( fDigits != 0 ) ; - assert ( fTmpHits != 0 ) ; - fNTmpHits = fNhits = 0 ; fIshunt = 1 ; // All hits are associated with primary particles @@ -119,15 +111,27 @@ AliPHOSv0::AliPHOSv0(AliPHOSReconstructioner& Reconstructioner, const char *nam // Defining the PHOS Reconstructioner - fReconstructioner = &Reconstructioner; + fReconstructioner = &Reconstructioner ; } //____________________________________________________________________________ AliPHOSv0::~AliPHOSv0() { - delete fHits ; + fTmpHits->Delete() ; delete fTmpHits ; - delete fDigits ; + fTmpHits = 0 ; + + fEmcClusters->Delete() ; + delete fEmcClusters ; + fEmcClusters = 0 ; + + fPpsdClusters->Delete() ; + delete fPpsdClusters ; + fPpsdClusters = 0 ; + + fTrackSegments->Delete() ; + delete fTrackSegments ; + fTrackSegments = 0 ; } //____________________________________________________________________________ @@ -1022,7 +1026,7 @@ void AliPHOSv0::CreateGeometryforPPSD() //___________________________________________________________________________ Int_t AliPHOSv0::Digitize(Float_t Energy){ - Float_t fB = 10000000. ; + Float_t fB = 100000000. ; Float_t fA = 0. ; Int_t chan = Int_t(fA + Energy*fB ) ; return chan ; @@ -1039,7 +1043,6 @@ void AliPHOSv0::FinishEvent() for ( i = 0 ; i < fNTmpHits ; i++ ) { Hit = (AliPHOSHit*)fTmpHits->At(i) ; - assert (Hit!=0) ; Digit = new AliPHOSDigit(Hit->GetId(),Digitize(Hit->GetEnergy())) ; new(lDigits[fNdigits]) AliPHOSDigit(* Digit) ; fNdigits++; delete Digit ; @@ -1087,28 +1090,43 @@ void AliPHOSv0::MakeBranch(Option_t* opt) printf("* AliPHOS::MakeBranch * Making Branch %s for digits\n",branchname); } } -//_____________________________________________________________________________ -void AliPHOSv0::Reconstruction(AliPHOSReconstructioner& Reconstructioner) +//_____________________________________________________________________________ +void AliPHOSv0::Reconstruction(AliPHOSReconstructioner & Reconstructioner) { - fReconstructioner = &Reconstructioner; - if (fEmcClusters) - { fEmcClusters->Delete();} - else - { fEmcClusters= new TClonesArray("AliPHOSEmcRecPoint", 100); } ; + // reinitializes the existing RecPoint Lists and steers the reconstruction processes - if (fPpsdClusters) - { fPpsdClusters->Delete(); } - else - { fPpsdClusters = new TClonesArray("AliPHOSPpsdRecPoint", 100) ;} + fReconstructioner = &Reconstructioner ; + cout << "Hola1" << endl; + if (fEmcClusters) { + fEmcClusters->Delete() ; + delete fEmcClusters ; + fEmcClusters = 0 ; - if (fTrackSegments) - { fTrackSegments->Delete(); } - else - { fTrackSegments = new TObjArray(100) ;} - + } + fEmcClusters= new RecPointsList("AliPHOSEmcRecPoint", 100) ; + + cout << "Hola2" << endl; + if (fPpsdClusters) { + fPpsdClusters->Delete() ; + delete fPpsdClusters ; + fPpsdClusters = 0 ; + } + fPpsdClusters = new RecPointsList("AliPHOSPpsdRecPoint", 100) ; + + + cout << "Hola3" << endl; + if (fTrackSegments) { + fTrackSegments->Print(""); + fTrackSegments->Delete() ; + delete fTrackSegments ; + fTrackSegments = 0 ; + } + fTrackSegments = new TObjArray(100) ; + + cout << "Hola4" << endl; fReconstructioner->Make(fDigits, fEmcClusters, fPpsdClusters, fTrackSegments); - + cout << "Hola5" << endl; } //____________________________________________________________________________ diff --git a/PHOS/AliPHOSv0.h b/PHOS/AliPHOSv0.h index 74c0c4f0f73..e244c44b019 100644 --- a/PHOS/AliPHOSv0.h +++ b/PHOS/AliPHOSv0.h @@ -1,37 +1,8 @@ -#ifndef ALIPHOSXXX_H -#define ALIPHOSXXX_H +#ifndef ALIPHOSV0_H +#define ALIPHOSV0_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ -//////////////////////////////////////////////// -// Short description // -// Author SUBATECH // -// comment // -// // -//////////////////////////////////////////////// - -// --- ROOT system --- - -// --- Standard library --- - -// --- AliRoot header files --- - -class AliPHOSxxx { - -public: - - virtual ~AliPHOSxxx() ; // dtor - -private: - -ClassDef(AliPHOSxxx,1) // description , version 1 - -}; - -#endif // AliPHOSXXX_H -//-*-C++-*- -#ifndef ALIPHOSV4_H -#define ALIPHOSV4_H //////////////////////////////////////////////// // Manager class for PHOS // // Version SUBATECH // @@ -55,8 +26,8 @@ public: AliPHOSv0(void) ; AliPHOSv0(const char *name, const char *title="") ; - AliPHOSv0(AliPHOSReconstructioner& Reconstructioner, const char *name, const char *title="") ; - virtual ~AliPHOSv0(void) ; + AliPHOSv0(AliPHOSReconstructioner& Reconstructioner, const char *name, const char *title="") ; + virtual ~AliPHOSv0(void) ; virtual void AddHit( Int_t track, Int_t id, Float_t *hits ) ; // adds a pre-digitilized hit to the hit tree virtual void BuildGeometry(void) ; // creates the geometry for the ROOT display @@ -66,35 +37,34 @@ public: void CreateGeometryforPHOS(void) ; // creates the PHOS geometry for GEANT void CreateGeometryforPPSD(void) ; // creates the PPSD geometry for GEANT Int_t Digitize(Float_t Energy); - RecPointsList* EmcClusters() {return fEmcClusters;} // gets TClonesArray of cluster in the crystals + RecPointsList* EmcClusters() {return fEmcClusters;} // gets TClonesArray of cluster in the crystals void FinishEvent(void) ; // makes the digits from the hits + virtual AliPHOSGeometry * GetGeometry() { return fGeom ; } virtual void Init(void) ; // does nothing + Int_t IsVersion(void) const { return 0 ; } void MakeBranch(Option_t* opt) ; RecPointsList* PpsdClusters() {return fPpsdClusters;} // gets TClonesArray of clusters in the PPSD void Reconstruction(AliPHOSReconstructioner& Reconstructioner) ; void ResetClusters(){} ; - void SetReconstructioner(AliPHOSReconstructioner& Reconstructioner) {fReconstructioner = &Reconstructioner;} // + void SetReconstructioner(AliPHOSReconstructioner& Reconstructioner) {fReconstructioner = &Reconstructioner ;} virtual void StepManager(void) ; // does the tracking through PHOS and a preliminary digitalization - TObjArray * TrackSegments(){return fTrackSegments ;} - // inlines - - virtual AliPHOSGeometry * GetGeometry() { return fGeom ; } - Int_t IsVersion(void) const { return 4 ; } - + TObjArray * TrackSegments(){return fTrackSegments ;} + private: - AliPHOSGeometry * fGeom ; // geometry definition - RecPointsList * fEmcClusters; //! - Int_t fNTmpHits ; //! used internally for digitalization (!=do not stream) - RecPointsList * fPpsdClusters; //! - TObjArray * fTrackSegments ;//! - TClonesArray * fTmpHits ; //! idem + RecPointsList * fEmcClusters ; //! (!=do not stream) + AliPHOSGeometry * fGeom ; // geometry definition + Int_t fNTmpHits ; //! used internally for digitalization + RecPointsList * fPpsdClusters ; //! AliPHOSReconstructioner * fReconstructioner ; // Reconstrutioner of the PHOS event: Clusterization and subtracking procedures - AliPHOSTrackSegmentMaker * fTrackSegmentMaker ; + TClonesArray * fTmpHits ; //! idem + AliPHOSTrackSegmentMaker * fTrackSegmentMaker ; + TObjArray * fTrackSegments ; //! + public: ClassDef(AliPHOSv0,1) // PHOS main class , version subatech }; -#endif // AliPHOSV4_H +#endif // AliPHOSV0_H diff --git a/PHOS/AliPHOSv1.cxx b/PHOS/AliPHOSv1.cxx deleted file mode 100644 index 3ae43f6b80c..00000000000 --- a/PHOS/AliPHOSv1.cxx +++ /dev/null @@ -1,230 +0,0 @@ -/************************************************************************** - * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * - * * - * Author: The ALICE Off-line Project. * - * Contributors are mentioned in the code where appropriate. * - * * - * Permission to use, copy, modify and distribute this software and its * - * documentation strictly for non-commercial purposes is hereby granted * - * without fee, provided that the above copyright notice appears in all * - * copies and that both the copyright notice and this permission notice * - * appear in the supporting documentation. The authors make no claims * - * about the suitability of this software for any purpose. It is * - * provided "as is" without express or implied warranty. * - **************************************************************************/ - -/* -$Log$ -*/ - -///////////////////////////////////////////////////////// -// Manager and hits classes for set:PHOS version 1 // -///////////////////////////////////////////////////////// - -// --- ROOT system --- -#include "TH1.h" -#include "TRandom.h" -#include "TFile.h" -#include "TTree.h" -#include "TMath.h" - -// --- galice header files --- -#include "AliPHOSv1.h" -#include "AliRun.h" - -ClassImp(AliPHOSv1) - -//______________________________________________________________________________ - - -AliPHOSv1::AliPHOSv1() -{ -} - -//______________________________________________________________________________ - -AliPHOSv1::AliPHOSv1(const char *name, const char *title) - : AliPHOS(name, title) -{ -} - -//___________________________________________ -void AliPHOSv1::CreateGeometry() -{ - - AliPHOS *PHOS_tmp = (AliPHOS*)gAlice->GetModule("PHOS"); - if( NULL==PHOS_tmp ) - { - printf("There isn't PHOS detector!\n"); - return; - } -// AliPHOS &PHOS = *PHOS_tmp; - - ////////////////////////////////////////////////////////////////////////////// - - Int_t rotation_matrix_number=0; - Float_t par[11], - x,y,z; - - const float cell_length = GetCrystalLength()+GetAirThickness()+GetWrapThickness()+GetPIN_Length(), - cell_side_size = GetCrystalSideSize()+2*GetAirThickness()+2*GetWrapThickness(), - cradle_thikness = cell_length; - - ////////////////////////////////////////////////////////////////////////////// - // CELL volume and subvolumes creation - ////////////////////////////////////////////////////////////////////////////// - - par[0] = GetCrystalSideSize()/2 + GetWrapThickness(); - par[1] = GetCrystalSideSize()/2 + GetWrapThickness(); - par[2] = GetCrystalLength() /2 + GetWrapThickness()/2; - gMC->Gsvolu("WRAP","BOX ",GetPHOS_IDTMED_Tyvek(),par,3); - - par[0] = GetCrystalSideSize()/2; - par[1] = GetCrystalSideSize()/2; - par[2] = GetCrystalLength()/2; - gMC->Gsvolu("CRST","BOX ",GetPHOS_IDTMED_PbWO4(),par,3); - - // PIN - par[0] = GetPIN_SideSize()/2; - par[1] = GetPIN_SideSize()/2; - par[2] = GetPIN_Length()/2; - gMC->Gsvolu("PIN ","BOX ",GetPHOS_IDTMED_PIN(),par,3); - - ////////////////////////////////////////////////////////////////////////////// - // CRADLE creation. - ////////////////////////////////////////////////////////////////////////////// - - par[0] = cell_side_size/2 * GetNz(); - par[1] = cell_side_size/2 * GetNphi(); - par[2] = cradle_thikness/2; - gMC->Gsvolu("PHOS","BOX ",GetPHOS_IDTMED_AIR(),par,3); - - - par[0] = cell_side_size/2 * GetNz(); - par[1] = cell_side_size/2 * GetNphi(); - par[2] = cell_length/2; - gMC->Gsvolu("CRS0","BOX ",GetPHOS_IDTMED_AIR(),par,3); - - x = 0; - y = 0; - z = -(cradle_thikness-cell_length)/2; - gMC->Gspos("CRS0",1,"PHOS",x,y,z,0,"ONLY"); - - gMC->Gsdvn("CRS1","CRS0",GetNphi(),2); - gMC->Gsdvn("CELL","CRS1",GetNz() ,1); - - ////////////////////////////////////////////////////////////////////////////// - // CELL creation - ////////////////////////////////////////////////////////////////////////////// - - x = 0; - y = 0; - z = -GetWrapThickness()/2; - gMC->Gspos("CRST",1,"WRAP",x,y,z,0,"ONLY"); - - x = 0; - y = 0; - z = GetPIN_Length()/2; - gMC->Gspos("WRAP",1,"CELL",x,y,z,0,"ONLY"); - - x = 0; - y = 0; - z = -GetCrystalLength()/2-GetWrapThickness()/2; - gMC->Gspos("PIN ",1,"CELL",x,y,z,0,"ONLY"); - - ////////////////////////////////////////////////////////////////////////////// - // CELL has been created. - ////////////////////////////////////////////////////////////////////////////// - - - ////////////////////////////////////////////////////////////////////////////// - // End of CRADLE creation. - ////////////////////////////////////////////////////////////////////////////// - - - ////////////////////////////////////////////////////////////////////////////// - // PHOS creation - ////////////////////////////////////////////////////////////////////////////// - - for( int i=0; iGspos("PHOS",i+1,"ALIC",x,y,z,rotation_matrix_number,"ONLY"); - - GetCradleAngle(i) = cradle_angle_pos; - } - AddPHOSCradles(); - - ////////////////////////////////////////////////////////////////////////////// - // All is done. - // Print some information. - ////////////////////////////////////////////////////////////////////////////// -} - -void AliPHOSv1::StepManager() -{ - static Bool_t inwold=0; // Status of previous ctrak->inwvol - Int_t copy; - - int cradle_number, cell_Z, cell_Phi; // Variables that describe cell position. - - if( gMC->GetMedium() == GetPHOS_IDTMED_PIN() && (gMC->IsTrackInside() || gMC->IsTrackExiting()==2) && inwold && gMC->TrackCharge()!=0 ) - { - // GEANT particle just have entered into PIN diode. - - AliPHOS &PHOS = *(AliPHOS*)gAlice->GetModule("PHOS"); - - gMC->CurrentVolOffID(4,copy); - cradle_number = copy-1; - gMC->CurrentVolOffID(1,copy); - cell_Z = copy-1; - gMC->CurrentVolOffID(2,copy); - cell_Phi = copy-1; -/* - cradle_number = cvolu->number[cvolu->nlevel-5]-1; - cell_Z = cvolu->number[cvolu->nlevel-2]-1; - cell_Phi = cvolu->number[cvolu->nlevel-3]-1; -*/ - - TH2S &h = PHOS.GetCradle(cradle_number).fChargedTracksInPIN; - h.AddBinContent(h.GetBin(cell_Z,cell_Phi)); - } - - ////////////////////////////////////////////////////////////////////////////// - - if( gMC->GetMedium() == GetPHOS_IDTMED_PbWO4() ) - { - // GEANT particle into crystal. - - AliPHOS &PHOS = *(AliPHOS*)gAlice->GetModule("PHOS"); - - gMC->CurrentVolOffID(5,copy); - cradle_number = copy-1; - gMC->CurrentVolOffID(2,copy); - cell_Z = copy-1; - gMC->CurrentVolOffID(3,copy); - cell_Phi = copy-1; -/* - cradle_number = cvolu->number[cvolu->nlevel-6]-1; - cell_Z = cvolu->number[cvolu->nlevel-3]-1; - cell_Phi = cvolu->number[cvolu->nlevel-4]-1; -*/ - TH2F &h = PHOS.GetCradle(cradle_number).fCellEnergy; - h.AddBinContent(h.GetBin(cell_Z,cell_Phi),gMC->Edep()); - } - - ////////////////////////////////////////////////////////////////////////////// - - - inwold=gMC->IsTrackEntering(); // Save current status of GEANT variable. -} - diff --git a/PHOS/AliPHOSv1.h b/PHOS/AliPHOSv1.h deleted file mode 100644 index f4a4d358653..00000000000 --- a/PHOS/AliPHOSv1.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef PHOSv1_H -#define PHOSv1_H -/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * - * See cxx source for full Copyright notice */ - -/* $Id$ */ - -//////////////////////////////////////////////////////// -// Manager and hits classes for set:PHOS version 1 // -//////////////////////////////////////////////////////// - -// --- galice header files --- -#include "AliPHOS.h" - -class AliPHOSv1 : public AliPHOS { - - public: - AliPHOSv1(); - AliPHOSv1(const char *name, const char *title); - virtual ~AliPHOSv1(){} - virtual void CreateGeometry(); - virtual Int_t IsVersion() const {return 1;} - virtual void StepManager(); - - ClassDef(AliPHOSv1,1) //Hits manager for set:PHOS version 1 -}; - -#endif - diff --git a/PHOS/AliPHOSv2.cxx b/PHOS/AliPHOSv2.cxx deleted file mode 100644 index ecd1a606eaa..00000000000 --- a/PHOS/AliPHOSv2.cxx +++ /dev/null @@ -1,732 +0,0 @@ -/************************************************************************** - * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * - * * - * Author: The ALICE Off-line Project. * - * Contributors are mentioned in the code where appropriate. * - * * - * Permission to use, copy, modify and distribute this software and its * - * documentation strictly for non-commercial purposes is hereby granted * - * without fee, provided that the above copyright notice appears in all * - * copies and that both the copyright notice and this permission notice * - * appear in the supporting documentation. The authors make no claims * - * about the suitability of this software for any purpose. It is * - * provided "as is" without express or implied warranty. * - **************************************************************************/ - -/* -$Log$ -Revision 1.9 1999/11/08 07:12:31 fca -Minor corrections thanks to I.Hrivnacova - -Revision 1.8 1999/09/29 09:24:25 fca -Introduction of the Copyright and cvs Log - -*/ - -//-*-C++-*- -//_________________________________________________________________________ -// Manager and hit classes for PHOS -//*-- Author : Maxim Volkov, RRC KI -// AliPHOSv2 derives directly from AliDetector, because too much functionality -// has been put in AliPHOS for my liking. -////////////////////////////////////////////////////////////////////////////// - -// --- ROOT system --- -#include "TH1.h" -#include "TRandom.h" -#include "TFile.h" -#include "TTree.h" -#include "TBRIK.h" -#include "TNode.h" - -// --- Standard library --- -#include -#include -#include - -// --- galice header files --- -#include "AliPHOSv2.h" -#include "AliRun.h" -#include "AliConst.h" - -/////////////////////////////////////////////////////////////////////////////// - -ClassImp(AliPHOSv2) - -/////////////////////////////////////////////////////////////////////////////// - -AliPHOSv2::~AliPHOSv2(void) -{ - - // fNV = 0; - // fNH = 0; - fIshunt = 0; - -} - -/////////////////////////////////////////////////////////////////////////////// - -AliPHOSv2::AliPHOSv2() -{ - - // fNV = 0; - // fNH = 0; - fIshunt = 0; - fHits = 0; - fDigits = 0; - -} - -/////////////////////////////////////////////////////////////////////////////// - -AliPHOSv2::AliPHOSv2(const char *name, const char *title): - AliPHOS(name,title) -{ - - //Begin_Html - /* - - */ - //End_Html - - fHits = new TClonesArray("AliPHOShitv2", 405); - - // fNV = 4; - // fNH = 4; - fIshunt = 1; // All hits are associated with primary particles - - DefPars(); // Set geometry parameters - - // SetMarkerColor(kGreen); - // SetMarkerStyle(2); - // SetMarkerSize(0.4); - -} - -////////////////////////////////////////////////////////////////////////////// - -void AliPHOSv2::DefPars(void) -{ - - // Initialization of GEANT3 geometry parameters - fXtlSize[0]=2.2; - fXtlSize[1]=18.0; - fXtlSize[2]=2.2; - - fWrapThickness=0.01; - - fPINSize[0]=1.0; - fPINSize[1]=0.1; - fPINSize[2]=1.0; - - fCPVThickness=1.0; - - fPHOSFoam[0]=214.6; - fPHOSFoam[1]=80.0; - fPHOSFoam[2]=260.0; - - fPHOStxwall[0]=209.0; - fPHOStxwall[1]=71.0; - fPHOStxwall[2]=250.0; - - fPHOSAir[0]=206.0; - fPHOSAir[1]=66.0; - fPHOSAir[2]=244.0; - - fRadius[0]=447.0; - fRadius[1]=460.0; - - fPHOSextra[0]=0.005; // Titanium cover thickness - fPHOSextra[1]=6.95; // Crystal support height - fPHOSextra[2]=4.0; // Thermo Insulating outer cover Upper plate thickness - fPHOSextra[3]=5.0; // Upper Polystyrene Foam plate thickness - fPHOSextra[4]=2.0; // Thermo insulating Crystal Block wall thickness - fPHOSextra[5]=0.06; // Upper Cooling Plate thickness - fPHOSextra[6]=10.0; // Al Support Plate thickness - fPHOSextra[7]=3.0; // Lower Thermo Insulating Plate thickness - fPHOSextra[8]=1.0; // Lower Textolit Plate thickness - fPHOSextra[9]=0.03; // 1/2 total gap between adjacent crystals - - fNphi=88; - fNz=104; - - fNModules=4; - - fPHOSAngle[0]=0.0; // Module position angles are set in CreateGeometry() - fPHOSAngle[1]=0.0; - fPHOSAngle[2]=0.0; - fPHOSAngle[3]=0.0; - -} - -////////////////////////////////////////////////////////////////////////////// - -void AliPHOSv2::Init(void) -{ - - Int_t i; - - printf("\n"); - for(i=0;i<35;i++) printf("*"); - printf(" PHOS_INIT "); - for(i=0;i<35;i++) printf("*"); - printf("\n"); - - // Here the PHOS initialisation code (if any!) - for(i=0;i<80;i++) printf("*"); - printf("\n"); - -} - -////////////////////////////////////////////////////////////////////////////// - -void AliPHOSv2::BuildGeometry() -{ - - // Stolen completely from A. Zvyagine - - TNode *Node, *Top; - - const int kColorPHOS = kRed; - - Top=gAlice->GetGeometry()->GetNode("alice"); - - // PHOS - Float_t pphi=12.9399462; - new TRotMatrix("rot988","rot988",90,-3*pphi,90,90-3*pphi,0,0); - new TRotMatrix("rot989","rot989",90,- pphi,90,90- pphi,0,0); - new TRotMatrix("rot990","rot990",90, pphi,90,90+ pphi,0,0); - new TRotMatrix("rot991","rot991",90, 3*pphi,90,90+3*pphi,0,0); - new TBRIK("S_PHOS","PHOS box","void",107.3,40,130); - Top->cd(); - Node=new TNode("PHOS1","PHOS1","S_PHOS",-317.824921,-395.014343,0,"rot988"); - Node->SetLineColor(kColorPHOS); - fNodes->Add(Node); - Top->cd(); - Node=new TNode("PHOS2","PHOS2","S_PHOS",-113.532333,-494.124908,0,"rot989"); - fNodes->Add(Node); - Node->SetLineColor(kColorPHOS); - Top->cd(); - Node=new TNode("PHOS3","PHOS3","S_PHOS", 113.532333,-494.124908,0,"rot990"); - Node->SetLineColor(kColorPHOS); - fNodes->Add(Node); - Top->cd(); - Node=new TNode("PHOS4","PHOS4","S_PHOS", 317.824921,-395.014343,0,"rot991"); - Node->SetLineColor(kColorPHOS); - fNodes->Add(Node); - -} - -////////////////////////////////////////////////////////////////////////////// - -void AliPHOSv2::CreateMaterials() -{ - - // DEFINITION OF AVAILABLE PHOS MATERIALS - - Int_t ISXFLD=gAlice->Field()->Integ(); - Float_t SXMGMX=gAlice->Field()->Max(); - - // --- The PbWO4 crystals --- - Float_t AX[3]={207.19, 183.85, 16.0}; - Float_t ZX[3]={82.0, 74.0, 8.0}; - Float_t WX[3]={1.0, 1.0, 4.0}; - Float_t DX=8.28; - - // --- Titanium --- - Float_t ATIT[3]={47.88, 26.98, 54.94}; - Float_t ZTIT[3]={22.0, 13.0, 25.0}; - Float_t WTIT[3]={69.0, 6.0, 1.0}; - Float_t DTIT=4.5; - - // --- The polysterene scintillator (CH) --- - Float_t AP[2]={12.011, 1.00794}; - Float_t ZP[2]={6.0, 1.0}; - Float_t WP[2]={1.0, 1.0}; - Float_t DP=1.032; - - // --- Tyvek (CnH2n) --- - Float_t AT[2]={12.011, 1.00794}; - Float_t ZT[2]={6.0, 1.0}; - Float_t WT[2]={1.0, 2.0}; - Float_t DT=0.331; - - // --- Polystyrene foam --- - Float_t AF[2]={12.011, 1.00794}; - Float_t ZF[2]={6.0, 1.0}; - Float_t WF[2]={1.0, 1.0}; - Float_t DF=0.12; - - // --- Foam thermo insulation --- - Float_t ATI[2]={12.011, 1.00794}; - Float_t ZTI[2]={6.0, 1.0}; - Float_t WTI[2]={1.0, 1.0}; - Float_t DTI=0.1; - - // --- Textolit --- - Float_t ATX[4]={16.0, 28.09, 12.011, 1.00794}; - Float_t ZTX[4]={8.0, 14.0, 6.0, 1.0}; - Float_t WTX[4]={292.0, 68.0, 462.0, 736.0}; - Float_t DTX=1.75; - - Int_t *idtmed = fIdtmed->GetArray()-699; - - AliMixture(0, "PbWO4$", AX, ZX, DX, -3, WX); - AliMixture(1, "Polystyrene$", AP, ZP, DP, -2, WP); - AliMaterial(2, "Al$", 26.98, 13., 2.7, 8.9, 999., 0, 0); - // --- Absorption length^ is ignored --- - AliMixture(3, "Tyvek$", AT, ZT, DT, -2, WT); - AliMixture(4, "Foam$", AF, ZF, DF, -2, WF); - AliMixture(5, "Titanium$", ATIT, ZTIT, DTIT, -3, WTIT); - AliMaterial(6, "Si$", 28.09, 14., 2.33, 9.36, 42.3, 0, 0); - AliMixture(7, "Thermo Insul.$", ATI, ZTI, DTI, -2, WTI); - AliMixture(8, "Textolit$", ATX, ZTX, DTX, -4, WTX); - AliMaterial(99, "Air$", 14.61, 7.3, 0.001205, 30420., 67500., 0, 0); - - AliMedium(0, "PHOS Xtal $", 0, 1, - ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.1, 0.1, 0, 0); - AliMedium(1, "CPV scint. $", 1, 1, - ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.1, 0.1, 0, 0); - AliMedium(2, "Al parts $", 2, 0, - ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.001, 0.001, 0, 0); - AliMedium(3, "Tyvek wrapper$", 3, 0, - ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.001, 0.001, 0, 0); - AliMedium(4, "Polyst. foam $", 4, 0, - ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.1, 0.1, 0, 0); - AliMedium(5, "Titan. cover $", 5, 0, - ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.0001, 0.0001, 0, 0); - AliMedium(6, "Si PIN $", 6, 0, - ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.01, 0.01, 0, 0); - AliMedium(7, "Thermo Insul.$", 7, 0, - ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.1, 0.1, 0, 0); - AliMedium(8, "Textolit $", 8, 0, - ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.1, 0.1, 0, 0); - AliMedium(99, "Air $", 99, 0, - ISXFLD, SXMGMX, 10.0, 1.0, 0.1, 0.1, 10.0, 0, 0); - - // --- Set decent energy thresholds for gamma and electron tracking - gMC->Gstpar(idtmed[699],"CUTGAM",0.5E-4); - gMC->Gstpar(idtmed[699],"CUTELE",1.0E-4); - // --- Generate explicitly delta rays in the titan cover --- - gMC->Gstpar(idtmed[704],"LOSS",3.); - gMC->Gstpar(idtmed[704],"DRAY",1.); - // --- and in aluminium parts --- - gMC->Gstpar(idtmed[701],"LOSS",3.); - gMC->Gstpar(idtmed[701],"DRAY",1.); - -} - -////////////////////////////////////////////////////////////////////////////// - -void AliPHOSv2::CreateGeometry() -{ - - AliPHOSv2 *PHOS_tmp = (AliPHOSv2*)gAlice->GetModule("PHOS"); - if(PHOS_tmp==NULL){ - - fprintf(stderr,"PHOS detector not found!\n"); - return; - - } - - // --- Dimensions of volumes --- - Float_t DPHOS[3], DPTXW[3], DPAIR[3]; - Float_t DPUFP[3], DPUCP[3], DPASP[3], DPTIP[3], DPTXP[3]; - Float_t DPTCB[3], DPCBL[3], DPSTC[3], DPPAP[3], DPXTL[3], DPSUP[3], - DPPIN[3]; - Float_t DPCPV[3], DPCPA[3]; - - Float_t R, YO, XP1, YP1, PPHI, angle; - Int_t IDROTM[99]; - Int_t i; - - Double_t const RADDEG=180.0/kPI; - // Double_t const DEGRAD=kPI/180.0; - - // --- Dimensions of PbWO4 crystal --- - // PARAMETER(XTL_X=2.2,XTL_Y=18.,XTL_Z=2.2) - Float_t XTL_X=GetCrystalSize(0); - Float_t XTL_Y=GetCrystalSize(1); - Float_t XTL_Z=GetCrystalSize(2); - - // --- Tyvek wrapper thickness - // PARAMETER(PAP_THICK=0.01) - Float_t PAP_THICK=GetWrapThickness(); - - // --- Steel (titanium) cover thickness --- - // PARAMETER(STE_THICK=0.005) - Float_t STE_THICK=GetPHOSextra(0); - - // --- Crystal support height --- - // PARAMETER(SUP_Y=6.95) - Float_t SUP_Y=GetPHOSextra(1); - - // --- PIN-diode dimensions --- - // PARAMETER(PIN_X=1.4,PIN_Y=0.4,PIN_Z=1.4) - Float_t PIN_X=GetPINSize(0); - Float_t PIN_Y=GetPINSize(1); - Float_t PIN_Z=GetPINSize(2); - - // --- CPV thickness --- - // PARAMETER(CPV_Y=0.5) - Float_t CPV_Y=GetCPVThickness(); - - // --- Foam Thermo Insulating outer cover dimensions --- - // PARAMETER(FTI_X=214.6,FTI_Y=80.,FTI_Z=260.) - Float_t FTI_X=GetPHOSFoam(0); - Float_t FTI_Y=GetPHOSFoam(1); - Float_t FTI_Z=GetPHOSFoam(2); - - // --- Thermo Insulating outer cover Upper plate thickness --- - // PARAMETER(FTIU_THICK=4.) - Float_t FTIU_THICK=GetPHOSextra(2); - - // --- Textolit Wall box dimentions --- - // PARAMETER(TXW_X=209.,TXW_Y=71.,TXW_Z=250.) - Float_t TXW_X=GetPHOStxwall(0); - Float_t TXW_Y=GetPHOStxwall(1); - Float_t TXW_Z=GetPHOStxwall(2); - - // --- Inner AIR volume dimensions --- - // PARAMETER(AIR_X=206.,AIR_Y=66.,AIR_Z=244.) - Float_t AIR_X=GetPHOSAir(0); - Float_t AIR_Y=GetPHOSAir(1); - Float_t AIR_Z=GetPHOSAir(2); - - // --- Upper Polystyrene Foam plate thickness --- - // PARAMETER(UFP_Y=5.) - Float_t UFP_Y=GetPHOSextra(3); - - // --- Thermo insulating Crystal Block wall thickness --- - // PARAMETER(TCB_THICK=2.) - Float_t TCB_THICK=GetPHOSextra(4); - - // --- Upper Cooling Plate thickness --- - // PARAMETER(UCP_Y=0.06) - Float_t UCP_Y=GetPHOSextra(5); - - // --- Al Support Plate thickness --- - // PARAMETER(ASP_Y=10.) - Float_t ASP_Y=GetPHOSextra(6); - - // --- Lower Thermo Insulating Plate thickness --- - // PARAMETER(TIP_Y=3.) - Float_t TIP_Y=GetPHOSextra(7); - - // --- Lower Textolit Plate thickness --- - // PARAMETER(TXP_Y=1.) - Float_t TXP_Y=GetPHOSextra(8); - - // --- 1/2 total gap between adjacent crystals - Float_t TOTAL_GAP=GetPHOSextra(9); - - // --- Distance from IP to Foam Thermo Insulating top plate --- - // PARAMETER(FTI_R=467.) - Float_t FTI_R=GetRadius(0); - - // --- Distance from IP to Crystal Block top Surface (needs to be 460.) --- - // PARAMETER(CBS_R=480.) - Float_t CBS_R=GetRadius(1); - - // Get pointer to the array containing media indeces - Int_t *IDTMED = fIdtmed->GetArray()-699; - - // --- Define PHOS box volume, fill with thermo insulating foam --- - DPHOS[0]=FTI_X/2.0; - DPHOS[1]=FTI_Y/2.0; - DPHOS[2]=FTI_Z/2.0; - gMC->Gsvolu("PHOS", "BOX ", IDTMED[706], DPHOS, 3); - - // --- Define Textolit Wall box, position inside PHOS --- - DPTXW[0]=TXW_X/2.0; - DPTXW[1]=TXW_Y/2.0; - DPTXW[2]=TXW_Z/2.0; - gMC->Gsvolu("PTXW", "BOX ", IDTMED[707], DPTXW, 3); - YO=(FTI_Y-TXW_Y)/2.0-FTIU_THICK; - gMC->Gspos("PTXW", 1, "PHOS", 0.0, YO, 0.0, 0, "ONLY"); - - // --- Define Upper Polystyrene Foam Plate, place inside PTXW --- - // --- immediately below Foam Thermo Insulation Upper plate --- - DPUFP[0]=TXW_X/2.0; - DPUFP[1]=UFP_Y/2.0; - DPUFP[2]=TXW_Z/2.0; - gMC->Gsvolu("PUFP", "BOX ", IDTMED[703], DPUFP, 3); - YO=(TXW_Y-UFP_Y)/2.0; - gMC->Gspos("PUFP", 1, "PTXW", 0.0, YO, 0.0, 0, "ONLY"); - - // --- Define air-filled box, place inside PTXW --- - DPAIR[0]=AIR_X/2.0; - DPAIR[1]=AIR_Y/2.0; - DPAIR[2]=AIR_Z/2.0; - gMC->Gsvolu("PAIR", "BOX ", IDTMED[798], DPAIR, 3); - YO=(TXW_Y-AIR_Y)/2.0-UFP_Y; - gMC->Gspos("PAIR", 1, "PTXW", 0.0, YO, 0.0, 0, "ONLY"); - - // --- Define Thermo insulating Crystal Box, position inside PAIR --- - DPTCB[0]=GetNphi()*(XTL_X+2*TOTAL_GAP)/2.0+TCB_THICK; - DPTCB[1]=(XTL_Y+SUP_Y+PAP_THICK+STE_THICK)/2.0+TCB_THICK/2.0; - DPTCB[2]=GetNz()*(XTL_Z+2*TOTAL_GAP)/2.0+TCB_THICK; - gMC->Gsvolu("PTCB", "BOX ", IDTMED[706], DPTCB, 3); - YO=AIR_Y/2.0-DPTCB[1]- - (CBS_R-FTI_R-TCB_THICK-FTIU_THICK-UFP_Y); - gMC->Gspos("PTCB", 1, "PAIR", 0.0, YO, 0.0, 0, "ONLY"); - - // --- Define Crystal BLock filled with air, position it inside PTCB --- - DPCBL[0]=GetNphi()*(XTL_X+2*TOTAL_GAP)/2.0; - DPCBL[1]=(XTL_Y+SUP_Y+PAP_THICK+STE_THICK)/2.0; - DPCBL[2]=GetNz()*(XTL_Z+2*TOTAL_GAP)/2.0; - gMC->Gsvolu("PCBL", "BOX ", IDTMED[798], DPCBL, 3); - - // --- Divide PCBL in X (phi) and Z directions -- - gMC->Gsdvn("PROW", "PCBL", GetNphi(), 1); - gMC->Gsdvn("PCEL", "PROW", GetNz(), 3); - YO=-TCB_THICK/2.0; - gMC->Gspos("PCBL", 1, "PTCB", 0.0, YO, 0.0, 0, "ONLY"); - - // --- Define STeel (actually, it's titanium) Cover volume, place inside PCEL - DPSTC[0]=(XTL_X+2*PAP_THICK)/2.0; - DPSTC[1]=(XTL_Y+SUP_Y+PAP_THICK+STE_THICK)/2.0; - DPSTC[2]=(XTL_Z+2*PAP_THICK+2*STE_THICK)/2.0; - gMC->Gsvolu("PSTC", "BOX ", IDTMED[704], DPSTC, 3); - gMC->Gspos("PSTC", 1, "PCEL", 0.0, 0.0, 0.0, 0, "ONLY"); - - // --- Define Tyvek volume, place inside PSTC --- - DPPAP[0]=XTL_X/2.0+PAP_THICK; - DPPAP[1]=(XTL_Y+SUP_Y+PAP_THICK)/2.0; - DPPAP[2]=XTL_Z/2.0+PAP_THICK; - gMC->Gsvolu("PPAP", "BOX ", IDTMED[702], DPPAP, 3); - YO=(XTL_Y+SUP_Y+PAP_THICK)/2.0-(XTL_Y+SUP_Y+PAP_THICK+STE_THICK)/2.0; - gMC->Gspos("PPAP", 1, "PSTC", 0.0, YO, 0.0, 0, "ONLY"); - - // --- Define PbWO4 crystal volume, place inside PPAP --- - DPXTL[0]=XTL_X/2.0; - DPXTL[1]=XTL_Y/2.0; - DPXTL[2]=XTL_Z/2.0; - gMC->Gsvolu("PXTL", "BOX ", IDTMED[699], DPXTL, 3); - YO=(XTL_Y+SUP_Y+PAP_THICK)/2.0-XTL_Y/2.0-PAP_THICK; - gMC->Gspos("PXTL", 1, "PPAP", 0.0, YO, 0.0, 0, "ONLY"); - - // --- Define crystal support volume, place inside PPAP --- - DPSUP[0]=XTL_X/2.0+PAP_THICK; - DPSUP[1]=SUP_Y/2.0; - DPSUP[2]=XTL_Z/2.0+PAP_THICK; - gMC->Gsvolu("PSUP", "BOX ", IDTMED[798], DPSUP, 3); - YO=SUP_Y/2.0-(XTL_Y+SUP_Y+PAP_THICK)/2.0; - gMC->Gspos("PSUP", 1, "PPAP", 0.0, YO, 0.0, 0, "ONLY"); - - // --- Define PIN-diode volume and position it inside crystal support --- - // --- right behind PbWO4 crystal - DPPIN[0]=PIN_X/2.0; - DPPIN[1]=PIN_Y/2.0; - DPPIN[2]=PIN_Z/2.0; - gMC->Gsvolu("PPIN", "BOX ", IDTMED[705], DPPIN, 3); - YO=SUP_Y/2.0-PIN_Y/2.0; - gMC->Gspos("PPIN", 1, "PSUP", 0.0, YO, 0.0, 0, "ONLY"); - - // --- Define Upper Cooling Panel, place it on top of PTCB --- - DPUCP[0]=DPTCB[0]; - DPUCP[1]=UCP_Y/2.0; - DPUCP[2]=DPTCB[2]; - gMC->Gsvolu("PUCP", "BOX ", IDTMED[701], DPUCP,3); - YO=(AIR_Y-UCP_Y)/2.0-(CBS_R-FTI_R-TCB_THICK-FTIU_THICK-UFP_Y-UCP_Y); - gMC->Gspos("PUCP", 1, "PAIR", 0.0, YO, 0.0, 0, "ONLY"); - - // --- Define Al Support Plate, position it inside PAIR --- - // --- right beneath PTCB --- - DPASP[0]=AIR_X/2.0; - DPASP[1]=ASP_Y/2.0; - DPASP[2]=AIR_Z/2.0; - gMC->Gsvolu("PASP", "BOX ", IDTMED[701], DPASP, 3); - YO=(AIR_Y-ASP_Y)/2.0-(CBS_R-FTI_R-FTIU_THICK-UFP_Y+DPCBL[1]*2); - gMC->Gspos("PASP", 1, "PAIR", 0.0, YO, 0.0, 0, "ONLY"); - - // --- Define Thermo Insulating Plate, position it inside PAIR --- - // --- right beneath PASP --- - DPTIP[0]=AIR_X/2.0; - DPTIP[1]=TIP_Y/2.0; - DPTIP[2]=AIR_Z/2.0; - gMC->Gsvolu("PTIP", "BOX ", IDTMED[706], DPTIP, 3); - YO=(AIR_Y-TIP_Y)/2.0-(CBS_R-FTI_R-FTIU_THICK-UFP_Y+DPCBL[1]*2+ASP_Y); - gMC->Gspos("PTIP", 1, "PAIR", 0.0, YO, 0.0, 0, "ONLY"); - - // --- Define Textolit Plate, position it inside PAIR --- - // --- right beneath PTIP --- - DPTXP[0]=AIR_X/2.0; - DPTXP[1]=TXP_Y/2.0; - DPTXP[2]=AIR_Z/2.0; - gMC->Gsvolu("PTXP", "BOX ", IDTMED[707], DPTXP, 3); - YO=(AIR_Y-TXP_Y)/2.0- - (CBS_R-FTI_R-FTIU_THICK-UFP_Y+DPCBL[1]*2+ASP_Y+TIP_Y); - gMC->Gspos("PTXP", 1, "PAIR", 0.0, YO, 0.0, 0, "ONLY"); - - // --- Define CPV volume, DON'T PLACE IT YET --- - // --- Divide in X and Z direction (same way as PCBL) --- - DPCPV[0]=DPCBL[0]; - DPCPV[1]=CPV_Y/2.0; - DPCPV[2]=DPCBL[2]; - // gMC->Gsvolu("PCPV", "BOX ", IDTMED[700], DPCPV, 3); - gMC->Gsvolu("PCPV", "BOX ", IDTMED[798], DPCPV, 3); - gMC->Gsdvn("PCRO", "PCPV", GetNphi(), 1); - gMC->Gsdvn("PCCE", "PCRO", GetNz(), 3); - - // Define CPV sensitive pad. It has the same size as PCCE. - DPCPA[0]=DPCBL[0]/GetNphi(); - DPCPA[1]=CPV_Y/2.0; - DPCPA[2]=DPCBL[2]/GetNz(); - gMC->Gsvolu("PCPA", "BOX ", IDTMED[700], DPCPA, 3); - gMC->Gspos("PCPA", 1, "PCCE", 0.0, 0.0, 0.0, 0, "ONLY"); - - // --- Position various PHOS units in ALICE setup --- - // --- PHOS itself first --- - PPHI=TMath::ATan(FTI_X/(2.0*FTI_R)); - PPHI*=RADDEG; - - for(i=1; i<=GetNModules(); i++){ - - angle=PPHI*2*(i-GetNModules()/2.0-0.5); - AliMatrix(IDROTM[i-1], 90.0, angle, 90.0, 90.0+angle, 0.0, 0.0); - - // --- Position various PHOS units in ALICE setup --- - // --- PHOS itself first --- - R=FTI_R+FTI_Y/2.0; - XP1=R*TMath::Sin(angle/RADDEG); - YP1=-R*TMath::Cos(angle/RADDEG); - gMC->Gspos("PHOS", i, "ALIC", XP1, YP1, 0.0, IDROTM[i-1], "ONLY"); - - // --- Now position PCPV so that its plates are right on top of --- - // --- corresponding PHOS modules (previously called cradles) --- - R=FTI_R-CPV_Y/2.0; - XP1=R*TMath::Sin(angle/RADDEG); - YP1=-R*TMath::Cos(angle/RADDEG); - gMC->Gspos("PCPV", i, "ALIC", XP1, YP1, 0.0, IDROTM[i-1], "ONLY"); - GetModuleAngle(i-1)=angle-90.0; - - } - - // --- Set volumes seen without their descendants for drawing --- - gMC->Gsatt("PCEL", "SEEN", -2); - gMC->Gsatt("PCCE", "SEEN", -2); - -} - -////////////////////////////////////////////////////////////////////////////// - -void AliPHOSv2::StepManager(void) -{ - - Int_t blrc[4]; // (box, layer, row, column) indices - Float_t xyze[4]; // position wrt MRS and energy deposited - TLorentzVector pos; - - Int_t *IDTMED=fIdtmed->GetArray()-699; - - if(gMC->GetMedium()==IDTMED[700]){ // We are inside a CPV sensitive pad - - gMC->TrackPosition(pos); - xyze[0]=pos[0]; - xyze[1]=pos[1]; - xyze[2]=pos[2]; - xyze[3]=gMC->Edep(); - - gMC->CurrentVolOffID(3, blrc[0]); - blrc[1]=1; // CPV corresponds to layer 1 - gMC->CurrentVolOffID(2, blrc[2]); - gMC->CurrentVolOffID(1, blrc[3]); - - AddHit(gAlice->CurrentTrack(), blrc, xyze); - - } - - if(gMC->GetMedium()==IDTMED[699]){ // We are inside a PWO crystal - - gMC->TrackPosition(pos); - xyze[0]=pos[0]; - xyze[1]=pos[1]; - xyze[2]=pos[2]; - xyze[3]=gMC->Edep(); - - gMC->CurrentVolOffID(9, blrc[0]); - blrc[1]=2; // PWO crystals correspond to layer 2 - gMC->CurrentVolOffID(4, blrc[2]); - gMC->CurrentVolOffID(3, blrc[3]); - - AddHit(gAlice->CurrentTrack(), blrc, xyze); - - } -} - -//////////////////////////////////////////////////////////////////////////// - -void AliPHOSv2::AddHit(Int_t track, Int_t *vol, Float_t *hits) -{ - - Int_t hitCounter; - TClonesArray &lhits = *fHits; - AliPHOShitv2 *newHit,*curHit; - - newHit=new AliPHOShitv2(fIshunt, track, vol, hits); - - for(hitCounter=0;hitCounter -#include - -// --- galice header files --- -#include "AliPHOS.h" -#include "AliHit.h" - -class AliPHOSv2 : public AliPHOS { - -protected: - Float_t fXtlSize[3]; // PWO crystal dimensions - Float_t fWrapThickness; // Thickness of Tyvek wrapper - Float_t fPINSize[3]; // PIN diode dimensions - Float_t fCPVThickness; // CPV thickness - Float_t fPHOSFoam[3]; // Outer foam cover dimensions - Float_t fPHOStxwall[3]; // Textolit box dimensions - Float_t fPHOSAir[3]; // Inner air filled volume dimensions - Float_t fRadius[2]; // Distances from IP to outer cover and to Xtal surface - Float_t fPHOSextra[10]; // Assorted geometrical parameters - Int_t fNphi; // Number of crystal units in X (phi) direction - Int_t fNz; // Number of crystal units in Z direction - Float_t fNModules; // Number of modules constituing PHOS - Float_t fPHOSAngle[4]; // Position angles of modules - -public: - AliPHOSv2(void); - AliPHOSv2(const char *name, const char *title=""); - virtual ~AliPHOSv2(void); - - virtual Int_t IsVersion(void) const {return 2;} - - virtual void DefPars(void); - - virtual void BuildGeometry(void); - virtual void CreateGeometry(void); - virtual void CreateMaterials(void); - - virtual void Init(void); - - virtual void StepManager(void); - - virtual void AddHit(Int_t track, Int_t *vol, Float_t *hits); - - virtual Float_t GetCrystalSize(Int_t n) const {return fXtlSize[n];} - virtual Float_t GetWrapThickness(void) const {return fWrapThickness;} - virtual Float_t GetPINSize(Int_t n) const {return fPINSize[n];} - virtual Float_t GetCPVThickness(void) const {return fCPVThickness;} - virtual Float_t GetPHOSFoam(Int_t n) const {return fPHOSFoam[n];} - virtual Float_t GetPHOStxwall(Int_t n) const {return fPHOStxwall[n];} - virtual Float_t GetPHOSAir(Int_t n) const {return fPHOSAir[n];} - virtual Float_t GetRadius(Int_t n) const {return fRadius[n];} - virtual Float_t GetPHOSextra(Int_t n) const {return fPHOSextra[n];} - virtual Int_t GetNphi(void) const {return fNphi;} - virtual Int_t GetNz(void) const {return fNz;} - virtual Float_t GetNModules(void) const {return fNModules;} - virtual Float_t &GetModuleAngle(Int_t n) {return fPHOSAngle[n];} - -ClassDef(AliPHOSv2,1) // Hits manager for PHOS, version 2 - -}; - -////////////////////////////////////////////////////////////////////////////// - -class AliPHOShitv2 : public AliHit{ - -protected: - Int_t fVolume[4]; //array of volumes. This is not GEANT NUMBV(), it is (BOX,LAYER,ROW,COLUMN) array. - Float_t fELOS; //Energy deposited - -public: - AliPHOShitv2(void) {;} - AliPHOShitv2(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits); - AliPHOShitv2(AliPHOShitv2 const &rValue){*this=rValue;} - virtual ~AliPHOShitv2(void) {;} - - Int_t GetVolume(Int_t i) const {return fVolume[i];} - Float_t GetEnergy(void) const {return fELOS;} - - Bool_t operator==(AliPHOShitv2 const &rValue) const; - AliPHOShitv2 const operator+(AliPHOShitv2 const &rValue) const; - -ClassDef(AliPHOShitv2,1) // Hits object for PHOS - -}; - -////////////////////////////////////////////////////////////////////////////// - -#endif //#ifndef ALIPHOS_H diff --git a/PHOS/Makefile b/PHOS/Makefile index 69bd9293cdb..79ad57a5414 100644 --- a/PHOS/Makefile +++ b/PHOS/Makefile @@ -15,7 +15,7 @@ SRCS = AliPHOS.cxx AliPHOSv0.cxx AliPHOSHit.cxx \ AliPHOSRecPoint.cxx AliPHOSEmcRecPoint.cxx AliPHOSPpsdRecPoint.cxx \ AliPHOSClusterizer.cxx AliPHOSClusterizerv1.cxx AliPHOSLink.cxx \ AliPHOSReconstructioner.cxx AliPHOSTrackSegment.cxx \ - AliPHOSTrackSegmentMaker.cxx AliPHOSTrackSegmentMakerv1.cxx + AliPHOSTrackSegmentMaker.cxx AliPHOSTrackSegmentMakerv1.cxx ReconstructionTest.cxx PHOSHistos.cxx # C++ Headers diff --git a/PHOS/PHOS-HTML/aliphosclusterization.gif b/PHOS/PHOS-HTML/aliphosclusterization.gif index a86a8c12a19..0f0127d7386 100644 Binary files a/PHOS/PHOS-HTML/aliphosclusterization.gif and b/PHOS/PHOS-HTML/aliphosclusterization.gif differ diff --git a/PHOS/PHOS-HTML/aliphossimulation.gif b/PHOS/PHOS-HTML/aliphossimulation.gif index e35e28c3146..8f861dd1453 100644 Binary files a/PHOS/PHOS-HTML/aliphossimulation.gif and b/PHOS/PHOS-HTML/aliphossimulation.gif differ diff --git a/PHOS/PHOS-HTML/aliphossubtracking.gif b/PHOS/PHOS-HTML/aliphossubtracking.gif index 75ee114a445..7a7bca2f0fd 100644 Binary files a/PHOS/PHOS-HTML/aliphossubtracking.gif and b/PHOS/PHOS-HTML/aliphossubtracking.gif differ diff --git a/PHOS/PHOS-UML/AliPHOSReconstruction.argo b/PHOS/PHOS-UML/AliPHOSReconstruction.argo index 11bd9bf6a31..2281cdee1ac 100644 --- a/PHOS/PHOS-UML/AliPHOSReconstruction.argo +++ b/PHOS/PHOS-UML/AliPHOSReconstruction.argo @@ -53,25 +53,25 @@ + value="143" /> + value="23" /> + value="23" /> + value="190134" /> + value="69" /> + value="0" /> + value="2" /> + value="0" /> + value="2" /> - - - - - - - - - - - - - - - - - - - AliPHOSv4 - - - - - - - - - - AddHit - - - - - - - - - - return - - - - - - - - - - - - - BuildGeometry - - - - - - - - - - return - - - - - - - - - - + + - - CreateGeometry + + CreateMaterials @@ -114,7 +44,7 @@ - + return @@ -127,8 +57,8 @@ - - FinishEvent + + GetGeometry @@ -137,21 +67,43 @@ - + return - - + + + + + + + + + + + + + + + + + + + AliPHOSGeometry + + + + + - - MakeBranch + + IsInitialized @@ -160,7 +112,7 @@ - + return @@ -173,8 +125,8 @@ - - StepManager + + RelPosInAlice @@ -183,7 +135,7 @@ - + return @@ -195,19 +147,9 @@ - - - - - AliPHOSGeometry - - - - - - - IsInitialized + + RelPosInModule @@ -216,7 +158,7 @@ - + return @@ -229,8 +171,8 @@ - - RelPosInAlice + + RelToAbsNumbering @@ -239,7 +181,7 @@ - + return @@ -252,8 +194,8 @@ - - RelPosInModule + + AbsToRelNumbering @@ -262,7 +204,7 @@ - + return @@ -275,8 +217,8 @@ - - RelToAbsNumbering + + many @@ -285,37 +227,25 @@ - - return + + getter/putter - - - + + + - - - - - AbsToRelNumbering - - - - - - - - + return - - + + @@ -334,43 +264,6 @@ - - - * fGeom - - - - - - - - - - - - 1 - - - - - - - - - - - - - - 1 - - - - - - - - AliHit @@ -403,23 +296,21 @@ - + return - - + + - - G - - etId + + GetId @@ -428,21 +319,21 @@ - + return - - + + - - fEnergy + + fELOS @@ -451,6 +342,8 @@ 0 + + @@ -464,49 +357,12 @@ 0 - - + + - - - create - - - - - - - - - - - - 0..* - - - - - - - - - - - - - - 1 - - - - - - - - AliDigit @@ -533,8 +389,54 @@ - - GetEnergy + + Compare + + + + + + + + + + return + + + + + + + + + + + + + GetAmp + + + + + + + + + + return + + + + + + + + + + + + + IsSortable @@ -543,14 +445,14 @@ - + return - - + + @@ -566,21 +468,21 @@ - + return - - + + - - fEnergy + + fAmp @@ -589,6 +491,8 @@ 0 + + @@ -602,58 +506,44 @@ 0 - - + + - - + + AliPHOSClusterizer - - - - - - create - - - - - 1 - - - - - - - - - - - - - - 0..* - - - - - - - - - - - AliPHOSClusterizer - - + + + + Calibrate + + + + + + + + + + return + + + + + + + + + + GetNumberOfClustersFound @@ -665,14 +555,14 @@ - + return - - + + @@ -688,7 +578,7 @@ - + return @@ -723,14 +613,37 @@ - + + return + + + + + + + + + + + + + Calibrate + + + + + + + + + return - - + + @@ -746,7 +659,76 @@ - + + return + + + + + + + + + + + + + GetLocalMaxCut + + + + + + + + + + return + + + + + + + + + + + + + GetLocalWeightCut + + + + + + + + + + return + + + + + + + + + + + + + GetNumberOfClustersFound + + + + + + + + + return @@ -769,7 +751,30 @@ - + + return + + + + + + + + + + + + + MakeClusters + + + + + + + + + return @@ -792,7 +797,30 @@ - + + return + + + + + + + + + + + + + SetCalibrationParameters + + + + + + + + + return @@ -815,7 +843,7 @@ - + return @@ -838,7 +866,53 @@ - + + return + + + + + + + + + + + + + SetLocalMaxCut + + + + + + + + + + return + + + + + + + + + + + + + SetLogWeightCut + + + + + + + + + return @@ -861,7 +935,7 @@ - + return @@ -884,7 +958,7 @@ - + return @@ -896,6 +970,51 @@ + + + fA + + + + 1 + + + 0. + + + + + + + + fB + + + + 1 + + + 0.1 + + + + + + + + fLocMaxCut + + + + 1 + + + 0.06 + + + + + fNumberOfEmcClusters @@ -907,8 +1026,8 @@ 0 - - + + @@ -922,8 +1041,8 @@ 0 - - + + @@ -935,8 +1054,10 @@ 1 - 0 + 0.1 + + @@ -948,8 +1069,10 @@ 1 - 0 + 0.01 + + @@ -961,8 +1084,10 @@ 1 - 0 + 0.00000015 + + @@ -974,8 +1099,25 @@ 1 - 0 + 0.0000001 + + + + + + + + fW0 + + + + 1 + + + 5.5 + + @@ -1018,15 +1160,15 @@ - + - - create + + use @@ -1034,77 +1176,57 @@ 1 - - + + - + - 0..* + 1 - - + + - - + + AliPHOSEmcRecPoint - - - use - - - - - 1 - - - - - - - - - - - - - - 1 - - - - - - - + + - - AliPHOSCluster + + AliPHOSPpsdRecPoint - + + + + + + + + + AliPHOSTrackSegmentMakerv1 + + - - - - + - - AddDigit + + FillOneModule @@ -1113,7 +1235,7 @@ - + return @@ -1126,8 +1248,8 @@ - - GetMultiplicity + + FindFit @@ -1136,21 +1258,21 @@ - + return - - + + - - GetDigitsList + + GetDistanceInPHOSPlane @@ -1159,7 +1281,7 @@ - + return @@ -1172,8 +1294,8 @@ - - Print + + MakeLinks @@ -1182,7 +1304,7 @@ - + return @@ -1195,8 +1317,8 @@ - - GetRelPosition + + MakePairs @@ -1205,7 +1327,7 @@ - + return @@ -1217,21 +1339,9 @@ - - - - - AliPHOSEmcCluster - - - - - - - - - AreNeighbours + + MakeTrackSegments @@ -1240,21 +1350,21 @@ - + return - - + + - - Compare + + SetMaxEmcPpsdDistance @@ -1263,7 +1373,7 @@ - + return @@ -1276,8 +1386,8 @@ - - GetAbsPosition + + ShowerShape @@ -1286,7 +1396,7 @@ - + return @@ -1299,8 +1409,8 @@ - - GetDispersion + + UnfoldClusters @@ -1309,21 +1419,21 @@ - + return - - + + - - GetElipsAxis + + UnfoldingChiSquare @@ -1332,7 +1442,7 @@ - + return @@ -1345,8 +1455,81 @@ - - GetMaximalEnergy + + fDelta + + + + 1 + + + 0 + + + + + + fR0 + + + + 1 + + + 0 + + + + + + + + + + + + + + + use + + + + + 1 + + + + + + + + + + + + + + 1 + + + + + + + + + + + AliPHOSSubTrack + + + + + + + + GetDistannceInPHOSPlane @@ -1355,21 +1538,21 @@ - + return - - + + - - GetMultiplicityAtLevel + + GetEnergy @@ -1378,21 +1561,21 @@ - + return - - + + - - GetNumberOfLocalMaxima + + GetMomentumDirection @@ -1401,21 +1584,21 @@ - + return - - + + - - GetRelPosition + + GetParticuleType @@ -1424,21 +1607,21 @@ - + return - - + + - - GetTotalEnergy + + GetPosition @@ -1447,7 +1630,7 @@ - + return @@ -1460,8 +1643,8 @@ - - SetLocalMaxCut + + Print @@ -1470,7 +1653,7 @@ - + return @@ -1483,8 +1666,8 @@ - - SetLowWeightCut + + SetDispersionCutOff @@ -1493,7 +1676,7 @@ - + return @@ -1506,406 +1689,67 @@ - - fDigitsList - - - - 1 - - - 0 - - - - - - fEnergy + + fCutOnDispersion 1 - 0 + 1.5 + + - - fMultiplicity + + fEmcRecPoint 1 - 0 - - + + - - fDelta + + fPpsdLow 1 - 4. + + - - fLocMaxCut + + fPpsdUp 1 - 0.6 - - - - - - fW0 - - - - 1 - - - 4. + + - - AliPHOSPpsdCluster - - - - - - - - - - Compare - - - - - - - - - - return - - - - - - - - - - - - - GetRelPosition - - - - - - - - - - return - - - - - - - - - - - - - GetUp - - - - - - - - - - return - - - - - - - - - - - - - fDigitsList - - - - 1 - - - 0 - - - - - - fEnergy - - - - 1 - - - 0 - - - - - - fMultiplicity - - - - 1 - - - 0 - - - - - - - - - - AliPHOSSubTracker - - - - - - - - - MakeSubTracks - - - - - - - - - - return - - - - - - - - - - - - - - - AliPHOSSubTrackerv1 - - - - - - - - - - GetDistanceInPHOSPlane - - - - - - - - - - return - - - - - - - - - - - - - fDelta - - - - 1 - - - 0 - - - - - - fR0 - - - - 1 - - - 0 - - - - - - - - - - - - - - - use - - - - - 1 - - - - - - - - - - - - - - 1 - - - - - - - - - - - AliPHOSSubTrack - - - - - - - - fCutOnDispersion - - - - 1 - - - 1.5 - - - - - - fEmcCluster - - - - 1 - - - 0 - - - - - - fPpsdLow - - - - 1 - - - 0 - - - - - - fPpsdUp - - - - 1 - - - 0 - - - - - - - - + + @@ -1921,7 +1765,7 @@ - + @@ -1972,7 +1816,7 @@ - + @@ -2009,7 +1853,7 @@ - + @@ -2032,7 +1876,7 @@ - + @@ -2046,7 +1890,7 @@ - + @@ -2069,7 +1913,7 @@ - + @@ -2083,7 +1927,7 @@ - + @@ -3072,7 +2916,7 @@ - + @@ -3109,7 +2953,7 @@ - + @@ -3267,43 +3111,6 @@ - - - fSubTracker - - - - - - - - - - - - 1 - - - - - - - - - - - - - - 1 - - - - - - - - PHOS actor @@ -3526,7 +3333,6 @@ energy loss - Charged and Neutral hadrons: energy loss -momentum smearing - +momentum smearing @@ -3555,12 +3360,10 @@ momentum smearing - +momentum smearing --> - - - Stack - - - - - - - - boolean + + + AliPHOSv0 + + + + + + + + + + AddHit + + + + + + + + + + return + + + + + + + + + + + + + BuildGeometry + + + + + + + + + + return + + + + + + + + + + + + + BuildGeometryforPHOS + + + + + + + + + + return + + + + + + + + + + + + + BuildGeometryforPPSD + + + + + + + + + + return + + + + + + + + + + + + + CreateGeometry + + + + + + + + + + return + + + + + + + + + + + + + CreateGeometryforPHOS + + + + + + + + + + return + + + + + + + + + + + + + CreateGeometryforPPSD + + + + + + + + + + return + + + + + + + + + + + + + Digitize + + + + + + + + + + return + + + + + + + + + + + + + EmcClusters + + + + + + + + + + return + + + + + + + + + + + + + GetGeometry + + + + + + + + + + return + + + + + + + + + + + + + FinishEvent + + + + + + + + + + return + + + + + + + + + + + + + Init + + + + + + + + + + return + + + + + + + + + + + + + IsVersion + + + + + + + + + + return + + + + + + + + + + + + + MakeBranch + + + + + + + + + + return + + + + + + + + + + + + + PpsdClusters + + + + + + + + + + return + + + + + + + + + + + + + Reconstruction + + + + + + + + + + return + + + + + + + + + + + + + ResetClusters + + + + + + + + + + return + + + + + + + + + + + + + SetReconstructioner + + + + + + + + + + return + + + + + + + + + + + + + StepManager + + + + + + + + + + return + + + + + + + + + + + + + ShowMembers + + + + + + + + + + return + + + + + + + + + + + + + Streamer + + + + + + + + + + return + + + + + + + + + + + + + TrqackSegments + + + + + + + + + + return + + + + + + + + + + + + + fEmcClusters + + + + 1 + + + + + + + + + + fGeom + + + + 1 + + + + + + + + + + fPpsdClusters + + + + 1 + + + + + + + + + + fReconstructioner + + + + 1 + + + + + + + + + + fTmpHits + + + + 1 + + + + + + + + + + fTrackSegmentsMaker + + + + 1 + + + + + + + + + + fTrackSegments + + + + 1 + + + + + + + + + + fNTmpHits + + + + 1 + + + + + + + + + + + + + + + + + + + uses + + + + + 1 + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + creates + + + + + 1 + + + + + + + + + + + + + + 0..* + + + + + + + + + + + + + + + + + + creates + + + + + 1 + + + + + + + + + + + + + + 0..* + + + + + + + + + + + AliRecPoint + + + + + + + + AddDigit + + + + + + + + + + return + + + + + + + + + + + + + AddTrack + + + + + + + + + + return + + + + + + + + + + + + + GetCovarianceMatrix + + + + + + + + + + return + + + + + + + + + + + + + GetGeom + + + + + + + + + + return + + + + + + + + + + + + + GetGlobalPosition + + + + + + + + + + return + + + + + + + + + + + + + GetDigitsList + + + + + + + + + + return + + + + + + + + + + + + + GetEnergy + + + + + + + + + + return + + + + + + + + + + + + + GetLocalPosition + + + + + + + + + + return + + + + + + + + + + + + + GetDigitsMultiplicity + + + + + + + + + + return + + + + + + + + + + + + + GetMaximumDigitMultiplicity + + + + + + + + + + return + + + + + + + + + + + + + GetMaximumTrackMultiplicity + + + + + + + + + + return + + + + + + + + + + + + + getTracksList + + + + + + + + + + return + + + + + + + + + + + + + GetTracksMutliplicity + + + + + + + + + + return + + + + + + + + + + + + + Print + + + + + + + + + + return + + + + + + + + + + + + + fAmp + + + + 1 + + + + + + + + + + fDigitsList + + + + 1 + + + + + + + + + + fGeom + + + + 1 + + + + + + + + + + fLocPos + + + + 1 + + + + + + + + + + fLocPosM + + + + 1 + + + + + + + + + + fMaxDigit + + + + 1 + + + + + + + + + + fMulDigit + + + + 1 + + + + + + + + + + fMaxTrack + + + + 1 + + + + + + + + + + fMulTrack + + + + 1 + + + + + + + + + + fTracksList + + + + 1 + + + + + + + + + + + + AliPHOSRecPoint + + + + + + + + AddDigit + + + + + + + + + + return + + + + + + + + + + + + + Compare + + + + + + + + + + return + + + + + + + + + + + + + GetPHOSMod + + + + + + + + + + return + + + + + + + + + + + + + IsEmc + + + + + + + + + + return + + + + + + + + + + + + + IsSortable + + + + + + + + + + return + + + + + + + + + + + + + Print + + + + + + + + + + return + + + + + + + + + + + + + fPhosMod + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AliPHOSTrackSegmentMaker + + + + + + + + MakeTrackSegments + + + + + + + + + + return + + + + + + + + + + + + + SetMaxEmcPpsdDistance + + + + + + + + + + return + + + + + + + + + + + + + fR0 + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + Stack + + + + + + + + boolean @@ -3691,6 +4987,30 @@ resolution --> + + TClonesArray + + + + + + + + GetGeometry + + + + + + + + AliPHOSTrackSegmentMaker* + + + + + + Color @@ -3699,6 +5019,14 @@ resolution --> + + fEnergy + + + + + + Vector @@ -3707,6 +5035,14 @@ resolution --> + + AliPHOSGeometry * + + + + + + Integer @@ -3722,6 +5058,78 @@ resolution --> + + int* + + + + + + + + Float_t* + + + + + + + + TVector3 + + + + + + + + AliPHOSReconstructioner* + + + + + + + + TClonesArray* + + + + + + + + getters + + + + + + + + EmcClusers + + + + + + + + AliPHOSEmcRecPoint* + + + + + + + + AliGeometry* + + + + + + void @@ -3729,6 +5137,14 @@ resolution --> + + TObjArray + + + + + + Character @@ -3744,6 +5160,22 @@ resolution --> + + Boo_tl + + + + + + + + void?? + + + + + + Hashtable @@ -3760,6 +5192,46 @@ resolution --> + + RecPointsList + + + + + + + + Bool_t + + + + + + + + fDigitsList + + + + + + + + AliPHOSTrackSegmentMaker + + + + + + + + AliPHOSPpsdRecPoint* + + + + + + Byte @@ -3776,6 +5248,22 @@ resolution --> + + Int_t + + + + + + + + Float_t + + + + + + long @@ -3783,6 +5271,22 @@ resolution --> + + TMatrix* + + + + + + + + more + + + + + + Point @@ -3791,6 +5295,22 @@ resolution --> + + RecPointsList* + + + + + + + + String + + + + + + int @@ -3798,8 +5318,8 @@ resolution --> - - String + + bool @@ -3814,8 +5334,8 @@ resolution --> - - bool + + TObjArray* @@ -3829,6 +5349,14 @@ resolution --> + + parameterName + + + + + + char @@ -3836,6 +5364,38 @@ resolution --> + + AliPHOSAppsdRecPoint* + + + + + + + + and + + + + + + + + ... + + + + + + + + MaximumDigitMultiplicity + + + + + + Long @@ -3844,5 +5404,13 @@ resolution --> + + AliPHOSGeometry* + + + + + + diff --git a/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram1.pgml b/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram1.pgml index 14471119ea5..4f74dc345d6 100644 --- a/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram1.pgml +++ b/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram1.pgml @@ -4,7 +4,7 @@ name="simulation" > <<Interface>> AliDetector <<Interface>> AliPHOS + >public void CreateMaterials() +public AliPHOSGeometry * GetGeometry() - - - - - AliPHOSv4 - - public void AddHit() -public void BuildGeometry() -public void CreateGeometry() -public void FinishEvent() -public void MakeBranch() -public void StepManager() - - - - font="Dialog" textsize="9" >AliPHOSGeometry - font="Dialog" textsize="9" >private many data - public void RelPosInAlice() public void RelPosInModule() public void RelToAbsNumbering() -public void AbsToRelNumbering() +public void AbsToRelNumbering() +public and many(more getter/putter) - - stroke="1" strokecolor="-256" /> - - font="Times" textsize="10" ><<Interface>> - font="Dialog" textsize="9" >AliHit - textsize="9" > - - - font="Dialog" textsize="9" >AliPHOSHit - private fEnergy = 0 -private int fId = 0 - private Float_t fELOS = 0 +private Int_t fId = 0 + public float GetEnergy() -public int G - - etId() + >public Float_t GetEnergy() +public Int_t GetId() - - - - <<Interface>> - AliDigit - - - - AliPHOSDigit - private fEnergy = 0 -private int fId = 0 - private Int_t fAmp = 0 +private Int_t fId = 0 + public float GetEnergy() -public int GetId() + >public void?? Compare() +public Int_t GetAmp() +public Bool_t IsSortable() +public Int_t GetId() - font="dialog" textsize="10" >singleton + + + + + + AliPHOSv0 + private RecPointsList* fEmcClusters +private AliPHOSGeometry* fGeom +private RecPointsList* fPpsdClusters +private AliPHOSReconstructioner* fReconstructioner +private TClonesArray* fTmpHits +private AliPHOSTrackSegmentMaker* fTrackSegmentsMaker +private TObjArray* fTrackSegments +private Int_t fNTmpHits + public void AddHit() +public void BuildGeometry() +public void BuildGeometryforPHOS() +public void BuildGeometryforPPSD() +public void CreateGeometry() +public void CreateGeometryforPHOS() +public void CreateGeometryforPPSD() +public void Digitize() +public RecPointsList* EmcClusters() +public AliPHOSGeometry* GetGeometry() +public void FinishEvent() +public void Init() +public Int_t IsVersion() +public void MakeBranch() +public RecPointsList PpsdClusters() +public void Reconstruction() +public void ResetClusters() +public void SetReconstructioner() +public void StepManager() +public void ShowMembers() +public void Streamer() +public TObjArray TrqackSegments() + stroke="1" strokecolor="-16777216" > - - + + strokecolor="-16777216" > - sourcePortFig="Fig2" - destPortFig="Fig1" - sourceFigNode="Fig2" - destFigNode="Fig1" + sourcePortFig="Fig4" + destPortFig="Fig3" + sourceFigNode="Fig4" + destFigNode="Fig3" stroke="1" strokecolor="-16777216" > - - + + - sourcePortFig="Fig2" - destPortFig="Fig3" - sourceFigNode="Fig2" - destFigNode="Fig3" + sourcePortFig="Fig6.0" + destPortFig="Fig5.0" + sourceFigNode="Fig6" + destFigNode="Fig5" stroke="1" strokecolor="-16777216" > - - + + strokecolor="-16777216" > - sourcePortFig="Fig5" - destPortFig="Fig4" - sourceFigNode="Fig5" - destFigNode="Fig4" + sourcePortFig="Fig8.0" + destPortFig="Fig1.0" + sourceFigNode="Fig8" + destFigNode="Fig1" stroke="1" strokecolor="-16777216" > - - + + - sourcePortFig="Fig5.0" + sourcePortFig="Fig8.0" destPortFig="Fig2.0" - sourceFigNode="Fig5" + sourceFigNode="Fig8" destFigNode="Fig2" stroke="1" strokecolor="-16777216" > - - + + - sourcePortFig="Fig7.0" - destPortFig="Fig6.0" - sourceFigNode="Fig7" - destFigNode="Fig6" + sourcePortFig="Fig8.0" + destPortFig="Fig4.0" + sourceFigNode="Fig8" + destFigNode="Fig4" stroke="1" strokecolor="-16777216" > - - + + - sourcePortFig="Fig2.0" - destPortFig="Fig7.0" - sourceFigNode="Fig2" - destFigNode="Fig7" + sourcePortFig="Fig8.0" + destPortFig="Fig6.0" + sourceFigNode="Fig8" + destFigNode="Fig6" stroke="1" strokecolor="-16777216" > - - - + + diff --git a/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram2.pgml b/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram2.pgml index 66f946e2783..e13ec709a25 100644 --- a/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram2.pgml +++ b/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram2.pgml @@ -4,7 +4,7 @@ name="Clusterisation" > <<Interface>> AliPHOSClusterizer public int GetNumberOfClustersFound() + >public void Calibrate() +public Int_t GetNumberOfClustersFound() public void MakeClusters() textsize="9" >AliPHOSClusterizerv1 private int fNumberOfEmcClusters = 0 -private int fNumberOfPpsdClusters = 0 -private fEmcClusteringThreshold = 0 -private fEmcEnergyThreshold = 0 -private fPpsdClusteringThreshold = 0 -private fPpsdEnergyThreshold = 0 + >private Float_t fA = 0. +private Float_t fB = 0.1 +private Float_t fLocMaxCut = 0.06 +private Int_t fNumberOfEmcClusters = 0 +private Int_t fNumberOfPpsdClusters = 0 +private Float_t fEmcClusteringThreshold = 0.1 +private Float_t fEmcEnergyThreshold = 0.01 +private Float_t fPpsdClusteringThreshold = 0.00000015 +private Float_t fPpsdEnergyThreshold = 0.0000001 +private Float_t fW0 = 5.5 public bool AreNeighbours() + >public Boo_tl AreNeighbours() +public void Calibrate() public void FillandSort() -public void IsInEmc() +public Float_t GetLocalMaxCut() +public Float_t GetLocalWeightCut() +public void GetNumberOfClustersFound() +public Bool_t IsInEmc() +public void MakeClusters() public void PrintParameters() +public void SetCalibrationParameters() public void SetEmcClusteringThreshold() public void SetEmcEnergyThreshold() +public void SetLocalMaxCut() +public void SetLogWeightCut() public void SetPpsdClusteringThreshold() public void SetPpsdEnergyThreshold() textsize="9" >AliPHOSDigit private fEnergy = 0 -private int fId = 0 + >private Int_t fAmp = 0 +private Int_t fId = 0 public float GetEnergy() -public int GetId() + >public void Compare() +public Int_t GetAmp() +public Bool_t IsSortable() +public Int_t GetId() textsize="9" >AliPHOSGeometry textsize="9" >private many data public void RelPosInAlice() public void RelPosInModule() public void RelToAbsNumbering() -public void AbsToRelNumbering() +public void AbsToRelNumbering() +public and many(more getter/putter) textsize="10" >singleton - + strokecolor="-16777216" + font="Dialog" + textsize="9" + >AliPHOSEmcRecPoint <<Interface>> - AliPHOSCluster - + public void AddDigit() -public int GetMultiplicity() -public void GetDigitsList() -public void Print() -public void GetRelPosition() + > AliPHOSEmcCluster + >AliPHOSPpsdRecPoint private fDigitsList = 0 -private fEnergy = 0 -private int fMultiplicity = 0 -private fDelta = 4. -private fLocMaxCut = 0.6 -public fW0 = 4. + > public bool AreNeighbours() -public void Compare() -public void GetAbsPosition() -public float GetDispersion() -public void GetElipsAxis() -public float GetMaximalEnergy() -public void GetMultiplicityAtLevel() -public void GetNumberOfLocalMaxima() -public void GetRelPosition() -public void GetTotalEnergy() -public void SetLocalMaxCut() -public void SetLowWeightCut() + > - - + AliRecPoint + protected Float_t fAmp +protected int* fDigitsList +protected AliGeometry* fGeom +protected TVector3 fLocPos +protected TMatrix* fLocPosM +protected Int_t fMaxDigit +protected Int_t fMulDigit +protected Int_t fMaxTrack +protected Int_t fMulTrack +protected int* fTracksList + public void AddDigit() +public void?? AddTrack() +public void GetCovarianceMatrix() +public AliGeometry* GetGeom() +public void GetGlobalPosition() +public int* GetDigitsList() +public Float_t GetEnergy() +public void GetLocalPosition() +public Int_t GetDigitsMultiplicity() +public Int_t GetMaximumDigitMultiplicity() +public Int_t GetMaximumTrackMultiplicity() +public int* getTracksList() +public Int_t GetTracksMutliplicity() +public void Print() + + + + + + - AliPHOSPpsdCluster - AliPHOSRecPoint + public fDigitsList = 0 -private fEnergy = 0 -private int fMultiplicity = 0 - protected Int_t fPhosMod + public int Compare() -public void GetRelPosition() -public bool GetUp() + >public void AddDigit() +public void Compare() +public Int_t GetPHOSMod() +public Bool_t IsEmc() +public Bool_t IsSortable() +public void Print() - sourceFigNode="Fig1" destFigNode="Fig2" - - - - + + + - sourceFigNode="Fig1" destFigNode="Fig3" + + + + + + + + sourcePortFig="Fig1.0" + destPortFig="Fig0.0" + sourceFigNode="Fig1" + destFigNode="Fig0" + stroke="1" strokecolor="-16777216" > - - + + - sourcePortFig="Fig6" - destPortFig="Fig5" - sourceFigNode="Fig6" + sourcePortFig="Fig1.0" + destPortFig="Fig5.0" + sourceFigNode="Fig1" destFigNode="Fig5" stroke="1" strokecolor="-16777216" > - - + + - sourcePortFig="Fig7" - destPortFig="Fig5" - sourceFigNode="Fig7" - destFigNode="Fig5" + sourcePortFig="Fig1.0" + destPortFig="Fig6.0" + sourceFigNode="Fig1" + destFigNode="Fig6" stroke="1" strokecolor="-16777216" > - - + + - - sourcePortFig="Fig1.0" - destPortFig="Fig0.0" - sourceFigNode="Fig1" - destFigNode="Fig0" + sourcePortFig="Fig13.0" + destPortFig="Fig12.0" + sourceFigNode="Fig13" + destFigNode="Fig12" - - - + + + - - sourcePortFig="Fig1.0" - destPortFig="Fig6.0" - sourceFigNode="Fig1" - destFigNode="Fig6" + sourcePortFig="Fig5.0" + destPortFig="Fig13.0" + sourceFigNode="Fig5" + destFigNode="Fig13" - - - + + + + - - sourcePortFig="Fig1.0" - destPortFig="Fig7.0" - sourceFigNode="Fig1" - destFigNode="Fig7" + sourcePortFig="Fig6.0" + destPortFig="Fig13.0" + sourceFigNode="Fig6" + destFigNode="Fig13" - - - + + diff --git a/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram3.pgml b/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram3.pgml index 3a9567761bf..9233dd1f3b5 100644 --- a/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram3.pgml +++ b/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram3.pgml @@ -4,70 +4,70 @@ name="subtracking" > - + strokecolor="-16777216" + font="Dialog" + textsize="9" + >AliPHOSTrackSegmentMakerv1 <<Interface>> - AliPHOSSubTracker - public fDelta = 0 +public fR0 = 0 + public void MakeSubTracks() + >public void FillOneModule() +public void FindFit() +public void GetDistanceInPHOSPlane() +public void MakeLinks() +public void MakePairs() +public void MakeTrackSegments() +public void SetMaxEmcPpsdDistance() +public void ShowerShape() +public void UnfoldClusters() +public void UnfoldingChiSquare() AliPHOSSubTrackerv1 + >AliPHOSGeometry public fDelta = 0 -public fR0 = 0 + >private many data public float GetDistanceInPHOSPlane() + >public void IsInitialized() +public void RelPosInAlice() +public void RelPosInModule() +public void RelToAbsNumbering() +public void AbsToRelNumbering() +public and many(more getter/putter) - singleton + - - AliPHOSGeometry - AliPHOSSubTrack + private many data - private Float_t fCutOnDispersion = 1.5 +private AliPHOSEmcRecPoint* fEmcRecPoint +private AliPHOSPpsdRecPoint* fPpsdLow +private AliPHOSAppsdRecPoint* fPpsdUp + public void IsInitialized() -public void RelPosInAlice() -public void RelPosInModule() -public void RelToAbsNumbering() -public void AbsToRelNumbering() + >public Float_t GetDistannceInPHOSPlane() +public Float_t GetEnergy() +public Bool_t GetMomentumDirection() +public Int_t GetParticuleType() +public void GetPosition() +public void Print() +public void SetDispersionCutOff() + - singleton AliPHOSSubTrack + >AliPHOSEmcRecPoint private fCutOnDispersion = 1.5 -public fEmcCluster = 0 -public fPpsdLow = 0 -public fPpsdUp = 0 + > > AliPHOSEmcCluster + >AliPHOSPpsdRecPoint private fDigitsList = 0 -private fEnergy = 0 -private int fMultiplicity = 0 -private fDelta = 4. -private fLocMaxCut = 0.6 -public fW0 = 4. + > public bool AreNeighbours() -public void Compare() -public void GetAbsPosition() -public float GetDispersion() -public void GetElipsAxis() -public float GetMaximalEnergy() -public void GetMultiplicityAtLevel() -public void GetNumberOfLocalMaxima() -public void GetRelPosition() -public void GetTotalEnergy() -public void SetLocalMaxCut() -public void SetLowWeightCut() + > - - - AliPHOSPpsdCluster - AliPHOSTrackSegmentMaker + public fDigitsList = 0 -private fEnergy = 0 -private int fMultiplicity = 0 - private Float_t fR0 + public int Compare() -public void GetRelPosition() -public bool GetUp() + >public void MakeTrackSegments() +public void SetMaxEmcPpsdDistance() - - sourcePortFig="Fig1" - destPortFig="Fig0" - sourceFigNode="Fig1" - destFigNode="Fig0" + sourcePortFig="Fig0.0" + destPortFig="Fig1.0" + sourceFigNode="Fig0" + destFigNode="Fig1" - - - + + - - sourcePortFig="Fig1.0" - destPortFig="Fig2.0" - sourceFigNode="Fig1" - destFigNode="Fig2" + sourcePortFig="Fig0" + destPortFig="Fig3" + sourceFigNode="Fig0" + destFigNode="Fig3" - - - + + - - sourcePortFig="Fig1" - destPortFig="Fig4" - sourceFigNode="Fig1" + sourcePortFig="Fig3.0" + destPortFig="Fig4.0" + sourceFigNode="Fig3" destFigNode="Fig4" - - - + + + - - sourcePortFig="Fig4.0" + sourcePortFig="Fig3.0" destPortFig="Fig5.0" - sourceFigNode="Fig4" + sourceFigNode="Fig3" destFigNode="Fig5" - strokecolor="-16777216" > - + y="384" /> + - - sourcePortFig="Fig4.0" - destPortFig="Fig6.0" - sourceFigNode="Fig4" - destFigNode="Fig6" + sourcePortFig="Fig0.0" + destPortFig="Fig4.0" + sourceFigNode="Fig0" + destFigNode="Fig4" - - - - - + + + + - - sourcePortFig="Fig1.0" + sourcePortFig="Fig0.0" destPortFig="Fig5.0" - sourceFigNode="Fig1" + sourceFigNode="Fig0" destFigNode="Fig5" - - - - - + + + + + - sourcePortFig="Fig1.0" - destPortFig="Fig6.0" - sourceFigNode="Fig1" - destFigNode="Fig6" + sourcePortFig="Fig0.0" + destPortFig="Fig12.0" + sourceFigNode="Fig0" + destFigNode="Fig12" stroke="1" strokecolor="-16777216" > - - - - - + + diff --git a/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram4.pgml b/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram4.pgml index 2bf40280756..267355a3968 100644 --- a/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram4.pgml +++ b/PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram4.pgml @@ -4,7 +4,7 @@ name="TreeR" > TreeR PHOSPpsdClusters PHOSSubTracks TreeD AliPHOSReconstructioner <<Interface>> AliPHOSClusterizer x="208" y="200" width="176" - height="36" + height="28" fill="1" fillcolor="-56" stroke="1" @@ -161,17 +160,17 @@ public void MakeClusters() ><<Interface>> AliPHOSSubTracker + >AliPHOSTrackSegmentMaker x="24" y="24" width="176" - height="36" + height="28" fill="1" fillcolor="-1" stroke="1" @@ -223,7 +222,7 @@ public void MakeClusters() ><<Interface>> >AliReconstructioner diff --git a/PHOS/PHOS-UML/AliPHOSReconstruction_usecasediagram1.pgml b/PHOS/PHOS-UML/AliPHOSReconstruction_usecasediagram1.pgml index 11691995966..0b4f3966974 100644 --- a/PHOS/PHOS-UML/AliPHOSReconstruction_usecasediagram1.pgml +++ b/PHOS/PHOS-UML/AliPHOSReconstruction_usecasediagram1.pgml @@ -83,8 +83,8 @@ y="177" /> 1 . Get a Particle from TreeK - - stroke="1" strokecolor="-16777216" /> - stroke="1" strokecolor="-16777216" /> - of other detectors on the way of the particle - - stroke="1" strokecolor="-16777216" /> - stroke="1" strokecolor="-16777216" /> - >3. Get the average PHOS response to this particle - - stroke="1" strokecolor="-16777216" /> - stroke="1" strokecolor="-16777216" /> - and properties of the detected particle - - stroke="1" strokecolor="-16777216" /> - stroke="1" strokecolor="-16777216" /> - conversion probability energy loss - - stroke="1" strokecolor="-16777216" /> - stroke="1" strokecolor="-16777216" /> - textsize="9" >Charged and Neutral hadrons: energy loss -momentum smearing - +momentum smearing - - - - - - stroke="1" strokecolor="-16777216" /> - stroke="1" strokecolor="-16777216" /> - >Energy and momentum resolution - sourceFigNode="Fig0" destFigNode="Fig1" - y="52" /> - > sourcePortFig="Fig0" - destPortFig="Fig3" + destPortFig="Fig2" sourceFigNode="Fig0" - destFigNode="Fig3" + destFigNode="Fig2" - y="96" /> - > sourcePortFig="Fig0" - destPortFig="Fig5" + destPortFig="Fig3" sourceFigNode="Fig0" - destFigNode="Fig5" + destFigNode="Fig3" - y="208" /> - > sourcePortFig="Fig0" - destPortFig="Fig7" + destPortFig="Fig4" sourceFigNode="Fig0" - destFigNode="Fig7" + destFigNode="Fig4" - y="272" /> - - sourcePortFig="Fig9.0" - destPortFig="Fig3.0" - sourceFigNode="Fig9" - destFigNode="Fig3" + sourcePortFig="Fig5.0" + destPortFig="Fig2.0" + sourceFigNode="Fig5" + destFigNode="Fig2" - y="64" /> - - sourcePortFig="Fig11.0" - destPortFig="Fig3.0" - sourceFigNode="Fig11" - destFigNode="Fig3" + sourcePortFig="Fig6.0" + destPortFig="Fig2.0" + sourceFigNode="Fig6" + destFigNode="Fig2" - y="128" /> - - sourcePortFig="Fig13.0" - destPortFig="Fig5.0" - sourceFigNode="Fig13" - destFigNode="Fig5" + sourcePortFig="Fig7.0" + destPortFig="Fig3.0" + sourceFigNode="Fig7" + destFigNode="Fig3" - strokecolor="-16777216" > - sourcePortFig="Fig5.0" - destPortFig="Fig15.0" - sourceFigNode="Fig5" - destFigNode="Fig15" + sourcePortFig="Fig3.0" + destPortFig="Fig8.0" + sourceFigNode="Fig3" + destFigNode="Fig8" >) 65 87 406 DS -255 255 200 SC -32 407 175 -15 RF -0 0 0 SC -% Font[Dialog, 0, 9] -340 9 0 SF -(AliPHOSClusterizer) 77 81 396 DS -255 255 200 SC -31 394 177 -37 RF -255 255 0 SC -31 394 176 -36 RS -0 0 0 SC -(public int GetNumberOfClustersFound\(\)) 168 32 383 DS -(public void MakeClusters\(\)) 111 32 373 DS -255 255 255 SC -288 424 177 -164 RF -0 0 0 SC -288 424 176 -163 RS -255 255 255 SC -287 425 179 -16 RF -0 0 0 SC -287 425 178 -15 RS -0 0 0 SC -(AliPHOSClusterizerv1) 87 333 414 DS -255 255 255 SC -287 410 179 -66 RF -0 0 0 SC -287 410 178 -65 RS -0 0 0 SC -(private int fNumberOfEmcClusters = 0) 157 288 399 DS -(private int fNumberOfPpsdClusters = 0) 161 288 389 DS -(private fEmcClusteringThreshold = 0) 152 288 379 DS -(private fEmcEnergyThreshold = 0) 136 288 369 DS -(private fPpsdClusteringThreshold = 0) 156 288 359 DS -(private fPpsdEnergyThreshold = 0) 140 288 349 DS -255 255 255 SC -287 345 179 -86 RF -0 0 0 SC -287 345 178 -85 RS -0 0 0 SC -(public bool AreNeighbours\(\)) 122 288 334 DS -(public void FillandSort\(\)) 98 288 324 DS -(public void IsInEmc\(\)) 86 288 314 DS -(public void PrintParameters\(\)) 115 288 304 DS -(public void SetEmcClusteringThreshold\(\)) 169 288 294 DS -(public void SetEmcEnergyThreshold\(\)) 153 288 284 DS -(public void SetPpsdClusteringThreshold\(\)) 173 288 274 DS -(public void SetPpsdEnergyThreshold\(\)) 157 288 264 DS -255 255 255 SC -352 560 114 -68 RF -0 0 0 SC -352 560 113 -67 RS -255 255 255 SC -351 561 116 -16 RF -0 0 0 SC -351 561 115 -15 RS -0 0 0 SC -(AliPHOSDigit) 53 382 550 DS -255 255 255 SC -351 546 116 -28 RF -0 0 0 SC -351 546 115 -27 RS -0 0 0 SC -(private fEnergy = 0) 77 352 535 DS -(private int fId = 0) 72 352 525 DS -255 255 255 SC -351 519 116 -28 RF -0 0 0 SC -351 519 115 -27 RS -0 0 0 SC -(public float GetEnergy\(\)) 97 352 508 DS -(public int GetId\(\)) 71 352 498 DS -255 255 255 SC -558 424 145 -88 RF -0 0 0 SC -558 424 144 -87 RS -255 255 255 SC -557 425 147 -16 RF -0 0 0 SC -557 425 146 -15 RS -0 0 0 SC -(AliPHOSGeometry) 72 594 414 DS -255 255 255 SC -557 410 147 -18 RF -0 0 0 SC -557 410 146 -17 RS -0 0 0 SC -(private many data) 71 558 399 DS -255 255 255 SC -557 393 147 -58 RF -0 0 0 SC -557 393 146 -57 RS -0 0 0 SC -(public void IsInitialized\(\)) 101 558 382 DS -(public void RelPosInAlice\(\)) 109 558 372 DS -(public void RelPosInModule\(\)) 122 558 362 DS -(public void RelToAbsNumbering\(\)) 145 558 352 DS -(public void AbsToRelNumbering\(\)) 145 558 342 DS -255 255 255 SC -637 333 47 -16 RF -200 60 60 SC -637 333 46 -15 RS -0 0 255 SC -% Font[dialog, 0, 10] -383 10 8 SF -(singleton) 45 638 320 DS -255 255 200 SC -288 196 115 -81 RF -255 255 0 SC -288 196 114 -80 RS -255 255 200 SC -287 197 117 -28 RF -255 255 0 SC -287 197 116 -27 RS -255 255 200 SC -288 196 115 -17 RF -0 0 0 SC -% Font[Times, 0, 10] -381 10 4 SF -(<>) 65 313 182 DS -255 255 200 SC -288 183 115 -15 RF -0 0 0 SC -% Font[Dialog, 0, 9] -340 9 0 SF -(AliPHOSCluster) 62 314 172 DS -255 255 200 SC -287 170 117 -56 RF -255 255 0 SC -287 170 116 -55 RS -0 0 0 SC -(public void AddDigit\(\)) 95 288 159 DS -(public int GetMultiplicity\(\)) 107 288 149 DS -(public void GetDigitsList\(\)) 107 288 139 DS -(public void Print\(\)) 74 288 129 DS -(public void GetRelPosition\(\)) 115 288 119 DS -255 255 255 SC -32 319 166 -204 RF -0 0 0 SC -32 319 165 -203 RS -255 255 255 SC -31 320 168 -16 RF -0 0 0 SC -31 320 167 -15 RS -0 0 0 SC -(AliPHOSEmcCluster) 78 76 309 DS -255 255 255 SC -31 305 168 -66 RF -0 0 0 SC -31 305 167 -65 RS -0 0 0 SC -(private fDigitsList = 0) 87 32 294 DS -(private fEnergy = 0) 77 32 284 DS -(private int fMultiplicity = 0) 108 32 274 DS -(private fDelta = 4.) 73 32 264 DS -(private fLocMaxCut = 0.6) 107 32 254 DS -(public fW0 = 4.) 67 32 244 DS -255 255 255 SC -31 240 168 -126 RF -0 0 0 SC -31 240 167 -125 RS -0 0 0 SC -(public bool AreNeighbours\(\)) 122 32 229 DS -(public void Compare\(\)) 94 32 219 DS -(public void GetAbsPosition\(\)) 120 32 209 DS -(public float GetDispersion\(\)) 114 32 199 DS -(public void GetElipsAxis\(\)) 107 32 189 DS -(public float GetMaximalEnergy\(\)) 131 32 179 DS -(public void GetMultiplicityAtLevel\(\)) 142 32 169 DS -(public void GetNumberOfLocalMaxima\(\)) 166 32 159 DS -(public void GetRelPosition\(\)) 115 32 149 DS -(public void GetTotalEnergy\(\)) 118 32 139 DS -(public void SetLocalMaxCut\(\)) 121 32 129 DS -(public void SetLowWeightCut\(\)) 129 32 119 DS -255 255 255 SC -456 199 137 -84 RF -0 0 0 SC -456 199 136 -83 RS -255 255 255 SC -455 200 139 -16 RF -0 0 0 SC -455 200 138 -15 RS -0 0 0 SC -(AliPHOSPpsdCluster) 82 483 189 DS -255 255 255 SC -455 185 139 -36 RF -0 0 0 SC -455 185 138 -35 RS -0 0 0 SC -(public fDigitsList = 0) 87 456 174 DS -(private fEnergy = 0) 77 456 164 DS -(private int fMultiplicity = 0) 108 456 154 DS -255 255 255 SC -455 150 139 -36 RF -0 0 0 SC -455 150 138 -35 RS -0 0 0 SC -(public int Compare\(\)) 87 456 139 DS -(public void GetRelPosition\(\)) 115 456 129 DS -(public bool GetUp\(\)) 85 456 119 DS -0 0 0 SC -false 295 424 295 549 352 549 3 PYS -0 0 0 SC -339 542 351 549 DL -339 556 351 549 DL -(use) 14 303 455 DS -(0..*) 16 329 560 DS -0 0 0 SC -false 465 420 558 420 2 PYS -0 0 0 SC -545 413 557 420 DL -545 427 557 420 DL -(use) 14 493 401 DS -0 0 0 SC -199 157 204 157 DL -209 157 214 157 DL -219 157 224 157 DL -229 157 234 157 DL -239 157 244 157 DL -249 157 254 157 DL -259 157 264 157 DL -269 157 274 157 DL -279 157 284 157 DL -255 255 255 SC -false 286 157 274 150 274 164 3 PYF -0 0 0 SC -true 286 157 274 150 274 164 3 PYS -0 0 0 SC -455 157 450 157 DL -445 157 440 157 DL -435 157 430 157 DL -425 157 420 157 DL -415 157 410 157 DL -405 157 404 157 DL -255 255 255 SC -false 405 157 417 164 417 150 3 PYF -0 0 0 SC -true 405 157 417 164 417 150 3 PYS -0 0 0 SC -288 413 283 413 DL -278 413 273 413 DL -268 413 263 413 DL -258 413 253 413 DL -248 413 243 413 DL -238 413 233 413 DL -228 413 223 413 DL -218 413 213 413 DL -208 413 207 413 DL -255 255 255 SC -false 208 413 220 420 220 406 3 PYF -0 0 0 SC -true 208 413 220 420 220 406 3 PYS -false 288 309 198 309 2 PYS -211 316 199 309 DL -211 302 199 309 DL -(create) 22 242 320 DS -(0..*) 16 205 290 DS -false 465 301 527 301 527 199 3 PYS -520 212 527 200 DL -534 212 527 200 DL -(create) 22 489 282 DS -(0..*) 16 534 210 DS -IC --29985 30597 60000 -60000 RC -% Font[TimesRoman, 0, 9] -314 9 4 SF -(Clusterisation) 48 25 40 DS -% Font[TimesRoman, 0, 9] -314 9 4 SF -(Page 1) 23 737 40 DS -EP -%%Trailer -%%Pages: 1 -%%EOF diff --git a/PHOS/PHOS-UML/aliphosrecomstructioner.ps b/PHOS/PHOS-UML/aliphosrecomstructioner.ps deleted file mode 100644 index b674deb40e9..00000000000 --- a/PHOS/PHOS-UML/aliphosrecomstructioner.ps +++ /dev/null @@ -1,344 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: reconstructioner -%%Pages: (atend) -%%PageOrder: Ascend -%%DocumentFonts: Helvetica Helvetica-Bold -%%+Helvetica-Oblique Helvetica-BoldOblique -%%+Times-Roman Times-Bold Times-Italic Times-BoldItalic -%%+Courier Courier-Bold Courier-Oblique Courier-BoldOblique -%%EndComments -%%BeginProlog -/BD {bind def} bind def -/D {def} BD -/ISOF { - dup findfont dup length 1 add dict begin { - 1 index /FID eq {pop pop} {D} ifelse - } forall /Encoding ISOLatin1Encoding D - currentdict end definefont -} BD -/F [ - /Helvetica ISOF - /Helvetica-Bold ISOF - /Helvetica-Oblique ISOF - /Helvetica-BoldOblique ISOF - /Times-Roman ISOF - /Times-Bold ISOF - /Times-Italic ISOF - /Times-BoldItalic ISOF - /Courier ISOF - /Courier-Bold ISOF - /Courier-Oblique ISOF - /Courier-BoldOblique ISOF -] D -/R {4 2 roll moveto 1 index 0 rlineto - 0 exch rlineto neg 0 rlineto closepath} BD -/Adict 8 dict D -Adict /mtrx matrix put -/A { Adict begin - /endangle exch D /startangle exch D - /yrad exch D /xrad exch D - /y exch D /x exch D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale - 0 0 1 startangle endangle arc - savematrix setmatrix - end } BD -/PY { - dup 1 ge {3 1 roll moveto} if - -1 2 {pop lineto} for - {closepath} if -} BD -/CL { dup 0 exch -1 1 arct} BD -/RCL { dup 0 exch 1 1 arct} BD -/RRdict 8 dict D -RRdict /mtrx matrix put -/RR {RRdict begin - /yrad exch D /xrad exch D - /height exch D /width exch D - /y exch D /x exch D - /width width xrad div D /height height yrad div D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale -90 rotate - 1 0 moveto width RCL width 0 translate -90 rotate - height CL height 0 translate -90 rotate - width RCL width 0 translate -90 rotate height CL closepath - savematrix setmatrix - end } BD -/SC {3 {255 div 3 1 roll} repeat setrgbcolor} BD -/SF { - F exch get exch scalefont setfont - (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890) stringwidth pop div - currentfont exch scalefont setfont} BD -/RC {R clip newpath} BD -/IC {initclip} BD -/RF {R fill} BD -/RS {R stroke} BD -/RRF {RR fill} BD -/RRS {RR stroke} BD -/AS {A stroke} BD -/AF {6 -2 roll 2 copy moveto 6 2 roll A fill} BD -/PYS {PY stroke} BD -/PYF {PY eofill} BD -/NZ {dup 1 lt {pop 1} if} BD -/DS { - moveto 1 index stringwidth pop NZ sub - 1 index length 1 sub NZ div 0 - 3 2 roll ashow} BD -/DL {moveto lineto stroke} BD -/S {scale} BD -/SP {/P save D} BD -/EP {showpage P restore} BD -/GS {gsave} BD -/GR {grestore} BD -/CM { - /cmapr 256 array D - /cmapg 256 array D - /cmapb 256 array D - /cmapgray null D - 3 string exch 0 exch 1 exch 1 sub { - currentfile 2 index readhexstring pop - cmapr 2 index 2 index 0 get put - cmapg 2 index 2 index 1 get put - cmapb 2 index 2 index 2 get put - pop pop } for pop -} BD -/DII { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw string D - /colorimage where { - pop - /cimgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - 2 copy get - cmapr 1 index get - cimgstr exch 3 index - 3 mul exch put - cmapg 1 index get - cimgstr exch 3 index - 3 mul 1 add exch put - cmapb 1 index get - cimgstr exch 3 index - 3 mul 2 add exch put - pop pop } for pop cimgstr - } false 3 colorimage - } { - cmapgray null eq { - /cmapgray cmapr length array D - 0 1 cmapr length 1 sub { - cmapgray exch - cmapr 1 index get .299 mul - cmapg 2 index get .587 mul - cmapb 3 index get .114 mul - add add cvi put - } for - } if - imgw imgh 8 [imgw 0 0 imgh neg 0 0] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - imgstr exch 2 copy get - cmapgray exch get put - } for - } image - } ifelse - imgsave restore - GR -} BD -/DI { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - } bind false 3 colorimage - imgsave restore - GR -} BD -%%EndProlog -%%BeginSetup -mark { -%%BeginFeature: ManualFeed false -1 dict dup /ManualFeed false put setpagedevice -%%EndFeature -} stopped { -%%BeginFeature: *ManualFeed false - statusdict /manualfeed false put -%%EndFeature -} if cleartomark mark { -%%BeginFeature: PageSize *Letter -3 dict begin - /PageSize [612 792] def - /ImagingBBox null def - /Policies 1 dict dup/PageSize 3 put def - currentdict end setpagedevice -%%EndFeature -} stopped { - cleartomark statusdict begin mark { -%%BeginFeature: *PageSize Letter - lettertray -%%EndFeature - } stopped end -} if cleartomark -% now make sure we got what we requested! -gsave initgraphics clippath pathbbox grestore -5 dict begin - 3 -1 roll /yoff exch def 3 -1 roll /xoff exch def - yoff sub /h exch def xoff sub /w exch def - w 576 lt h 756 lt or { - w 2 div xoff add h 2 div yoff add translate - w xoff 2 mul add 612 div - h yoff 2 mul add 792 div - 2 copy gt {exch} if pop dup scale - -306 -396 translate - } if -end - -%%EndSetup - -%%Page: 1 1 -SP -IC -15 777 582 -717 RC -255 255 255 SC -32 640 118 -86 RF -0 0 0 SC -32 640 117 -85 RS -255 255 255 SC -31 641 120 -16 RF -0 0 0 SC -31 641 119 -15 RS -% Font[Dialog, 0, 9] -340 9 0 SF -(AliPHOSReconstructioner) 103 39 630 DS -255 255 255 SC -31 626 120 -37 RF -0 0 0 SC -31 626 119 -36 RS -255 255 255 SC -31 590 120 -37 RF -0 0 0 SC -31 590 119 -36 RS -255 255 200 SC -224 648 175 -62 RF -255 255 0 SC -224 648 174 -61 RS -255 255 200 SC -223 649 177 -28 RF -255 255 0 SC -223 649 176 -27 RS -255 255 200 SC -224 648 175 -17 RF -0 0 0 SC -% Font[Times, 0, 10] -381 10 4 SF -(<>) 65 279 634 DS -255 255 200 SC -224 635 175 -15 RF -0 0 0 SC -% Font[Dialog, 0, 9] -340 9 0 SF -(AliPHOSClusterizer) 77 273 624 DS -255 255 200 SC -223 622 177 -37 RF -255 255 0 SC -223 622 176 -36 RS -0 0 0 SC -(public int GetNumberOfClustersFound\(\)) 168 224 611 DS -(public void MakeClusters\(\)) 111 224 601 DS -255 255 200 SC -224 576 121 -62 RF -255 255 0 SC -224 576 120 -61 RS -255 255 200 SC -223 577 123 -28 RF -255 255 0 SC -223 577 122 -27 RS -255 255 200 SC -224 576 121 -17 RF -0 0 0 SC -% Font[Times, 0, 10] -381 10 4 SF -(<>) 65 252 562 DS -255 255 200 SC -224 563 121 -15 RF -0 0 0 SC -% Font[Dialog, 0, 9] -340 9 0 SF -(AliPHOSSubTracker) 79 245 552 DS -255 255 200 SC -223 550 123 -37 RF -255 255 0 SC -223 550 122 -36 RS -0 0 0 SC -(public void MakeSubTracks\(\)) 121 224 539 DS -255 255 255 SC -40 752 121 -62 RF -0 0 0 SC -40 752 120 -61 RS -255 255 255 SC -39 753 123 -28 RF -0 0 0 SC -39 753 122 -27 RS -255 255 255 SC -40 752 121 -17 RF -0 0 0 SC -% Font[Times, 0, 10] -381 10 4 SF -(<>) 65 68 738 DS -255 255 255 SC -40 739 121 -15 RF -0 0 0 SC -% Font[Dialog, 0, 9] -340 9 0 SF -(AliReconstructioner) 81 60 728 DS -255 255 255 SC -39 726 123 -37 RF -0 0 0 SC -39 726 122 -36 RS -(public void MakeClusters\(\)) 111 40 715 DS -(public void MakeSubTracks\(\)) 121 40 705 DS -93 640 93 645 DL -93 650 93 655 DL -93 660 93 665 DL -93 670 93 675 DL -93 680 93 685 DL -255 255 255 SC -false 93 689 100 677 86 677 3 PYF -0 0 0 SC -true 93 689 100 677 86 677 3 PYS -false 150 616 224 616 2 PYS -255 255 255 SC -false 150 616 160 621 170 616 160 611 4 PYF -0 0 0 SC -true 150 616 160 621 170 616 160 611 4 PYS -(fClusterizer) 47 164 622 DS -false 150 569 224 569 2 PYS -255 255 255 SC -false 150 569 160 574 170 569 160 564 4 PYF -0 0 0 SC -true 150 569 160 574 170 569 160 564 4 PYS -(fSubTracker) 49 163 575 DS -IC --29985 30777 60000 -60000 RC -% Font[TimesRoman, 0, 9] -314 9 4 SF -(reconstructioner) 56 25 40 DS -% Font[TimesRoman, 0, 9] -314 9 4 SF -(Page 1) 23 557 40 DS -EP -%%Trailer -%%Pages: 1 -%%EOF diff --git a/PHOS/PHOS-UML/aliphosreconstructioner.gif b/PHOS/PHOS-UML/aliphosreconstructioner.gif deleted file mode 100644 index 423049583c9..00000000000 Binary files a/PHOS/PHOS-UML/aliphosreconstructioner.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/aliphossimulation.gif b/PHOS/PHOS-UML/aliphossimulation.gif deleted file mode 100644 index 41613ca279e..00000000000 Binary files a/PHOS/PHOS-UML/aliphossimulation.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/aliphossubtracking.gif b/PHOS/PHOS-UML/aliphossubtracking.gif deleted file mode 100644 index daadd963aed..00000000000 Binary files a/PHOS/PHOS-UML/aliphossubtracking.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/clusterisation.ps b/PHOS/PHOS-UML/clusterisation.ps deleted file mode 100644 index 201c55a2cf0..00000000000 --- a/PHOS/PHOS-UML/clusterisation.ps +++ /dev/null @@ -1,471 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: Clusterisation -%%Pages: (atend) -%%PageOrder: Ascend -%%DocumentFonts: Helvetica Helvetica-Bold -%%+Helvetica-Oblique Helvetica-BoldOblique -%%+Times-Roman Times-Bold Times-Italic Times-BoldItalic -%%+Courier Courier-Bold Courier-Oblique Courier-BoldOblique -%%EndComments -%%BeginProlog -/BD {bind def} bind def -/D {def} BD -/ISOF { - dup findfont dup length 1 add dict begin { - 1 index /FID eq {pop pop} {D} ifelse - } forall /Encoding ISOLatin1Encoding D - currentdict end definefont -} BD -/F [ - /Helvetica ISOF - /Helvetica-Bold ISOF - /Helvetica-Oblique ISOF - /Helvetica-BoldOblique ISOF - /Times-Roman ISOF - /Times-Bold ISOF - /Times-Italic ISOF - /Times-BoldItalic ISOF - /Courier ISOF - /Courier-Bold ISOF - /Courier-Oblique ISOF - /Courier-BoldOblique ISOF -] D -/R {4 2 roll moveto 1 index 0 rlineto - 0 exch rlineto neg 0 rlineto closepath} BD -/Adict 8 dict D -Adict /mtrx matrix put -/A { Adict begin - /endangle exch D /startangle exch D - /yrad exch D /xrad exch D - /y exch D /x exch D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale - 0 0 1 startangle endangle arc - savematrix setmatrix - end } BD -/PY { - dup 1 ge {3 1 roll moveto} if - -1 2 {pop lineto} for - {closepath} if -} BD -/CL { dup 0 exch -1 1 arct} BD -/RCL { dup 0 exch 1 1 arct} BD -/RRdict 8 dict D -RRdict /mtrx matrix put -/RR {RRdict begin - /yrad exch D /xrad exch D - /height exch D /width exch D - /y exch D /x exch D - /width width xrad div D /height height yrad div D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale -90 rotate - 1 0 moveto width RCL width 0 translate -90 rotate - height CL height 0 translate -90 rotate - width RCL width 0 translate -90 rotate height CL closepath - savematrix setmatrix - end } BD -/SC {3 {255 div 3 1 roll} repeat setrgbcolor} BD -/SF { - F exch get exch scalefont setfont - (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890) stringwidth pop div - currentfont exch scalefont setfont} BD -/RC {R clip newpath} BD -/IC {initclip} BD -/RF {R fill} BD -/RS {R stroke} BD -/RRF {RR fill} BD -/RRS {RR stroke} BD -/AS {A stroke} BD -/AF {6 -2 roll 2 copy moveto 6 2 roll A fill} BD -/PYS {PY stroke} BD -/PYF {PY eofill} BD -/NZ {dup 1 lt {pop 1} if} BD -/DS { - moveto 1 index stringwidth pop NZ sub - 1 index length 1 sub NZ div 0 - 3 2 roll ashow} BD -/DL {moveto lineto stroke} BD -/S {scale} BD -/SP {/P save D} BD -/EP {showpage P restore} BD -/GS {gsave} BD -/GR {grestore} BD -/CM { - /cmapr 256 array D - /cmapg 256 array D - /cmapb 256 array D - /cmapgray null D - 3 string exch 0 exch 1 exch 1 sub { - currentfile 2 index readhexstring pop - cmapr 2 index 2 index 0 get put - cmapg 2 index 2 index 1 get put - cmapb 2 index 2 index 2 get put - pop pop } for pop -} BD -/DII { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw string D - /colorimage where { - pop - /cimgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - 2 copy get - cmapr 1 index get - cimgstr exch 3 index - 3 mul exch put - cmapg 1 index get - cimgstr exch 3 index - 3 mul 1 add exch put - cmapb 1 index get - cimgstr exch 3 index - 3 mul 2 add exch put - pop pop } for pop cimgstr - } false 3 colorimage - } { - cmapgray null eq { - /cmapgray cmapr length array D - 0 1 cmapr length 1 sub { - cmapgray exch - cmapr 1 index get .299 mul - cmapg 2 index get .587 mul - cmapb 3 index get .114 mul - add add cvi put - } for - } if - imgw imgh 8 [imgw 0 0 imgh neg 0 0] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - imgstr exch 2 copy get - cmapgray exch get put - } for - } image - } ifelse - imgsave restore - GR -} BD -/DI { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - } bind false 3 colorimage - imgsave restore - GR -} BD -%%EndProlog -%%BeginSetup -mark { -%%BeginFeature: ManualFeed false -1 dict dup /ManualFeed false put setpagedevice -%%EndFeature -} stopped { -%%BeginFeature: *ManualFeed false - statusdict /manualfeed false put -%%EndFeature -} if cleartomark mark { -%%BeginFeature: PageSize *Letter -3 dict begin - /PageSize [612 792] def - /ImagingBBox null def - /Policies 1 dict dup/PageSize 3 put def - currentdict end setpagedevice -%%EndFeature -} stopped { - cleartomark statusdict begin mark { -%%BeginFeature: *PageSize Letter - lettertray -%%EndFeature - } stopped end -} if cleartomark -% now make sure we got what we requested! -gsave initgraphics clippath pathbbox grestore -5 dict begin - 3 -1 roll /yoff exch def 3 -1 roll /xoff exch def - yoff sub /h exch def xoff sub /w exch def - w 576 lt h 756 lt or { - w 2 div xoff add h 2 div yoff add translate - w xoff 2 mul add 612 div - h yoff 2 mul add 792 div - 2 copy gt {exch} if pop dup scale - -306 -396 translate - } if -end - -90 rotate 0 -612 translate -%%EndSetup - -%%Page: 1 1 -SP -IC -15 597 762 -537 RC -255 255 200 SC -32 420 175 -62 RF -255 255 0 SC -32 420 174 -61 RS -255 255 200 SC -31 421 177 -28 RF -255 255 0 SC -31 421 176 -27 RS -255 255 200 SC -32 420 175 -17 RF -0 0 0 SC -% Font[Times, 0, 10] -381 10 4 SF -(<>) 65 87 406 DS -255 255 200 SC -32 407 175 -15 RF -0 0 0 SC -% Font[Dialog, 0, 9] -340 9 0 SF -(AliPHOSClusterizer) 77 81 396 DS -255 255 200 SC -31 394 177 -37 RF -255 255 0 SC -31 394 176 -36 RS -0 0 0 SC -(public int GetNumberOfClustersFound\(\)) 168 32 383 DS -(public void MakeClusters\(\)) 111 32 373 DS -0 255 255 SC -288 424 177 -164 RF -288 424 176 -163 RS -255 255 255 SC -287 425 179 -16 RF -0 0 0 SC -287 425 178 -15 RS -(AliPHOSClusterizerv1) 87 333 414 DS -255 255 255 SC -287 410 179 -66 RF -0 0 0 SC -287 410 178 -65 RS -(private int fNumberOfEmcClusters = 0) 157 288 399 DS -(private int fNumberOfPpsdClusters = 0) 161 288 389 DS -(private float fEmcClusteringThreshold = 0) 173 288 379 DS -(private float fEmcEnergyThreshold = 0) 157 288 369 DS -(private float fPpsdClusteringThreshold = 0) 177 288 359 DS -(private float fPpsdEnergyThreshold = 0) 161 288 349 DS -255 255 255 SC -287 345 179 -86 RF -0 0 0 SC -287 345 178 -85 RS -(public bool AreNeighbours\(\)) 122 288 334 DS -(public void FillandSort\(\)) 98 288 324 DS -(public void IsInEmc\(\)) 86 288 314 DS -(public void PrintParameters\(\)) 115 288 304 DS -(public void SetEmcClusteringThreshold\(\)) 169 288 294 DS -(public void SetEmcEnergyThreshold\(\)) 153 288 284 DS -(public void SetPpsdClusteringThreshold\(\)) 173 288 274 DS -(public void SetPpsdEnergyThreshold\(\)) 157 288 264 DS -0 255 255 SC -351 561 116 -5 RF -351 561 115 -4 RS -255 255 255 SC -351 557 116 -16 RF -0 0 0 SC -351 557 115 -15 RS -(AliPHOSDigit) 53 382 546 DS -255 255 255 SC -351 542 116 -26 RF -0 0 0 SC -351 542 115 -25 RS -(private float fEnergy = 0) 98 352 531 DS -(private int fId = 0) 72 352 521 DS -255 255 255 SC -351 517 116 -26 RF -0 0 0 SC -351 517 115 -25 RS -(public float GetEnergy\(\)) 97 352 506 DS -(public int GetId\(\)) 71 352 496 DS -false 295 424 295 549 351 549 3 PYS -338 542 350 549 DL -338 556 350 549 DL -(use) 14 303 455 DS -(0..*) 16 328 560 DS -0 255 255 SC -557 425 147 -5 RF -557 425 146 -4 RS -255 255 255 SC -557 421 147 -16 RF -0 0 0 SC -557 421 146 -15 RS -(AliPHOSGeometry) 72 594 410 DS -255 255 255 SC -557 406 147 -16 RF -0 0 0 SC -557 406 146 -15 RS -(private many data) 74 558 395 DS -255 255 255 SC -557 391 147 -56 RF -0 0 0 SC -557 391 146 -55 RS -(public void IsInitialized\(\)) 101 558 380 DS -(public void RelPosInAlice\(\)) 109 558 370 DS -(public void RelPosInModule\(\)) 122 558 360 DS -(public void RelToAbsNumbering\(\)) 145 558 350 DS -(public void AbsToRelNumbering\(\)) 145 558 340 DS -false 465 420 557 420 2 PYS -544 413 556 420 DL -544 427 556 420 DL -(use) 14 493 401 DS -255 255 255 SC -663 333 47 -16 RF -200 60 60 SC -663 333 46 -15 RS -255 175 175 SC -664 332 45 -12 RF -0 0 255 SC -% Font[dialog, 0, 10] -383 10 8 SF -(singleton) 45 664 320 DS -255 255 200 SC -288 196 115 -81 RF -255 255 0 SC -288 196 114 -80 RS -255 255 200 SC -287 197 117 -28 RF -255 255 0 SC -287 197 116 -27 RS -255 255 200 SC -288 196 115 -17 RF -0 0 0 SC -% Font[Times, 0, 10] -381 10 4 SF -(<>) 65 313 182 DS -255 255 200 SC -288 183 115 -15 RF -0 0 0 SC -% Font[Dialog, 0, 9] -340 9 0 SF -(AliPHOSCluster) 62 314 172 DS -255 255 200 SC -287 170 117 -56 RF -255 255 0 SC -287 170 116 -55 RS -0 0 0 SC -(public void AddDigit\(\)) 95 288 159 DS -(public int GetMultiplicity\(\)) 107 288 149 DS -(public void GetDigitsList\(\)) 107 288 139 DS -(public void Print\(\)) 74 288 129 DS -(public void GetRelPosition\(\)) 115 288 119 DS -false 343 260 343 196 2 PYS -336 209 343 197 DL -350 209 343 197 DL -(create) 22 317 221 DS -(0..*) 16 350 207 DS -0 255 255 SC -32 319 166 -204 RF -32 319 165 -203 RS -255 255 255 SC -31 320 168 -16 RF -0 0 0 SC -31 320 167 -15 RS -(AliPHOSEmcCluster) 78 76 309 DS -255 255 255 SC -31 305 168 -66 RF -0 0 0 SC -31 305 167 -65 RS -(private DigitsList * fDigitsList = 0) 137 32 294 DS -(private float fEnergy = 0) 98 32 284 DS -(private int fMultiplicity = 0) 108 32 274 DS -(private float fDelta = 4.) 94 32 264 DS -(private float fLocMaxCut = 0.6) 128 32 254 DS -(public float fW0 = 4.) 88 32 244 DS -255 255 255 SC -31 240 168 -126 RF -0 0 0 SC -31 240 167 -125 RS -(public bool AreNeighbours\(\)) 122 32 229 DS -(public void Compare\(\)) 94 32 219 DS -(public void GetAbsPosition\(\)) 120 32 209 DS -(public float GetDispersion\(\)) 114 32 199 DS -(public void GetElipsAxis\(\)) 107 32 189 DS -(public float GetMaximalEnergy\(\)) 131 32 179 DS -(public void GetMultiplicityAtLevel\(\)) 142 32 169 DS -(public void GetNumberOfLocalMaxima\(\)) 166 32 159 DS -(public void GetRelPosition\(\)) 115 32 149 DS -(public void GetTotalEnergy\(\)) 118 32 139 DS -(public void SetLocalMaxCut\(\)) 121 32 129 DS -(public void SetLowWeightCut\(\)) 129 32 119 DS -199 157 204 157 DL -209 157 214 157 DL -219 157 224 157 DL -229 157 234 157 DL -239 157 244 157 DL -249 157 254 157 DL -259 157 264 157 DL -269 157 274 157 DL -279 157 284 157 DL -255 255 255 SC -false 286 157 274 150 274 164 3 PYF -0 0 0 SC -true 286 157 274 150 274 164 3 PYS -0 255 255 SC -456 199 137 -84 RF -456 199 136 -83 RS -255 255 255 SC -455 200 139 -16 RF -0 0 0 SC -455 200 138 -15 RS -(AliPHOSPpsdCluster) 82 483 189 DS -255 255 255 SC -455 185 139 -36 RF -0 0 0 SC -455 185 138 -35 RS -(public DigitsList fDigitsList = 0) 127 456 174 DS -(private float fEnergy = 0) 98 456 164 DS -(private int fMultiplicity = 0) 108 456 154 DS -255 255 255 SC -455 150 139 -36 RF -0 0 0 SC -455 150 138 -35 RS -(public int Compare\(\)) 87 456 139 DS -(public void GetRelPosition\(\)) 115 456 129 DS -(public bool GetUp\(\)) 85 456 119 DS -455 157 450 157 DL -445 157 440 157 DL -435 157 430 157 DL -425 157 420 157 DL -415 157 410 157 DL -405 157 404 157 DL -255 255 255 SC -false 405 157 417 164 417 150 3 PYF -0 0 0 SC -true 405 157 417 164 417 150 3 PYS -288 413 283 413 DL -278 413 273 413 DL -268 413 263 413 DL -258 413 253 413 DL -248 413 243 413 DL -238 413 233 413 DL -228 413 223 413 DL -218 413 213 413 DL -208 413 207 413 DL -255 255 255 SC -false 208 413 220 420 220 406 3 PYF -0 0 0 SC -true 208 413 220 420 220 406 3 PYS -IC --29985 30597 60000 -60000 RC -% Font[TimesRoman, 0, 9] -314 9 4 SF -(Clusterisation) 48 25 40 DS -% Font[TimesRoman, 0, 9] -314 9 4 SF -(Page 1) 23 737 40 DS -EP -%%Trailer -%%Pages: 1 -%%EOF diff --git a/PHOS/PHOS-UML/g1.gif b/PHOS/PHOS-UML/g1.gif deleted file mode 100644 index 769d526d921..00000000000 Binary files a/PHOS/PHOS-UML/g1.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/g10.gif b/PHOS/PHOS-UML/g10.gif deleted file mode 100644 index f8f466d38ac..00000000000 Binary files a/PHOS/PHOS-UML/g10.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/g11.gif b/PHOS/PHOS-UML/g11.gif deleted file mode 100644 index 91bd1ba1b3f..00000000000 Binary files a/PHOS/PHOS-UML/g11.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/g12.gif b/PHOS/PHOS-UML/g12.gif deleted file mode 100644 index 70c2e9350b4..00000000000 Binary files a/PHOS/PHOS-UML/g12.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/g2.gif b/PHOS/PHOS-UML/g2.gif deleted file mode 100644 index 4c7d36e069c..00000000000 Binary files a/PHOS/PHOS-UML/g2.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/g3.gif b/PHOS/PHOS-UML/g3.gif deleted file mode 100644 index 4e3cfb7cffe..00000000000 Binary files a/PHOS/PHOS-UML/g3.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/g4.gif b/PHOS/PHOS-UML/g4.gif deleted file mode 100644 index e209601d88a..00000000000 Binary files a/PHOS/PHOS-UML/g4.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/g5.gif b/PHOS/PHOS-UML/g5.gif deleted file mode 100644 index 7cf9f327bfa..00000000000 Binary files a/PHOS/PHOS-UML/g5.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/g6.gif b/PHOS/PHOS-UML/g6.gif deleted file mode 100644 index 20483dfd430..00000000000 Binary files a/PHOS/PHOS-UML/g6.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/g7.gif b/PHOS/PHOS-UML/g7.gif deleted file mode 100644 index 7e805c3d9e7..00000000000 Binary files a/PHOS/PHOS-UML/g7.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/g8.gif b/PHOS/PHOS-UML/g8.gif deleted file mode 100644 index 107af039372..00000000000 Binary files a/PHOS/PHOS-UML/g8.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/g9.gif b/PHOS/PHOS-UML/g9.gif deleted file mode 100644 index bae178ec8f3..00000000000 Binary files a/PHOS/PHOS-UML/g9.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/recpoint.ps b/PHOS/PHOS-UML/recpoint.ps deleted file mode 100644 index c154545ef8b..00000000000 --- a/PHOS/PHOS-UML/recpoint.ps +++ /dev/null @@ -1,582 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: YS Proposal -%%Pages: (atend) -%%PageOrder: Ascend -%%DocumentFonts: Helvetica Helvetica-Bold -%%+Helvetica-Oblique Helvetica-BoldOblique -%%+Times-Roman Times-Bold Times-Italic Times-BoldItalic -%%+Courier Courier-Bold Courier-Oblique Courier-BoldOblique -%%EndComments -%%BeginProlog -/BD {bind def} bind def -/D {def} BD -/ISOF { - dup findfont dup length 1 add dict begin { - 1 index /FID eq {pop pop} {D} ifelse - } forall /Encoding ISOLatin1Encoding D - currentdict end definefont -} BD -/F [ - /Helvetica ISOF - /Helvetica-Bold ISOF - /Helvetica-Oblique ISOF - /Helvetica-BoldOblique ISOF - /Times-Roman ISOF - /Times-Bold ISOF - /Times-Italic ISOF - /Times-BoldItalic ISOF - /Courier ISOF - /Courier-Bold ISOF - /Courier-Oblique ISOF - /Courier-BoldOblique ISOF -] D -/R {4 2 roll moveto 1 index 0 rlineto - 0 exch rlineto neg 0 rlineto closepath} BD -/Adict 8 dict D -Adict /mtrx matrix put -/A { Adict begin - /endangle exch D /startangle exch D - /yrad exch D /xrad exch D - /y exch D /x exch D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale - 0 0 1 startangle endangle arc - savematrix setmatrix - end } BD -/PY { - dup 1 ge {3 1 roll moveto} if - -1 2 {pop lineto} for - {closepath} if -} BD -/CL { dup 0 exch -1 1 arct} BD -/RCL { dup 0 exch 1 1 arct} BD -/RRdict 8 dict D -RRdict /mtrx matrix put -/RR {RRdict begin - /yrad exch D /xrad exch D - /height exch D /width exch D - /y exch D /x exch D - /width width xrad div D /height height yrad div D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale -90 rotate - 1 0 moveto width RCL width 0 translate -90 rotate - height CL height 0 translate -90 rotate - width RCL width 0 translate -90 rotate height CL closepath - savematrix setmatrix - end } BD -/SC {3 {255 div 3 1 roll} repeat setrgbcolor} BD -/SF { - F exch get exch scalefont setfont - (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890) stringwidth pop div - currentfont exch scalefont setfont} BD -/RC {R clip newpath} BD -/IC {initclip} BD -/RF {R fill} BD -/RS {R stroke} BD -/RRF {RR fill} BD -/RRS {RR stroke} BD -/AS {A stroke} BD -/AF {6 -2 roll 2 copy moveto 6 2 roll A fill} BD -/PYS {PY stroke} BD -/PYF {PY eofill} BD -/NZ {dup 1 lt {pop 1} if} BD -/DS { - moveto 1 index stringwidth pop NZ sub - 1 index length 1 sub NZ div 0 - 3 2 roll ashow} BD -/DL {moveto lineto stroke} BD -/S {scale} BD -/SP {/P save D} BD -/EP {showpage P restore} BD -/GS {gsave} BD -/GR {grestore} BD -/CM { - /cmapr 256 array D - /cmapg 256 array D - /cmapb 256 array D - /cmapgray null D - 3 string exch 0 exch 1 exch 1 sub { - currentfile 2 index readhexstring pop - cmapr 2 index 2 index 0 get put - cmapg 2 index 2 index 1 get put - cmapb 2 index 2 index 2 get put - pop pop } for pop -} BD -/DII { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw string D - /colorimage where { - pop - /cimgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - 2 copy get - cmapr 1 index get - cimgstr exch 3 index - 3 mul exch put - cmapg 1 index get - cimgstr exch 3 index - 3 mul 1 add exch put - cmapb 1 index get - cimgstr exch 3 index - 3 mul 2 add exch put - pop pop } for pop cimgstr - } false 3 colorimage - } { - cmapgray null eq { - /cmapgray cmapr length array D - 0 1 cmapr length 1 sub { - cmapgray exch - cmapr 1 index get .299 mul - cmapg 2 index get .587 mul - cmapb 3 index get .114 mul - add add cvi put - } for - } if - imgw imgh 8 [imgw 0 0 imgh neg 0 0] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - imgstr exch 2 copy get - cmapgray exch get put - } for - } image - } ifelse - imgsave restore - GR -} BD -/DI { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - } bind false 3 colorimage - imgsave restore - GR -} BD -%%EndProlog -%%BeginSetup -mark { -%%BeginFeature: ManualFeed false -1 dict dup /ManualFeed false put setpagedevice -%%EndFeature -} stopped { -%%BeginFeature: *ManualFeed false - statusdict /manualfeed false put -%%EndFeature -} if cleartomark mark { -%%BeginFeature: PageSize *Letter -3 dict begin - /PageSize [612 792] def - /ImagingBBox null def - /Policies 1 dict dup/PageSize 3 put def - currentdict end setpagedevice -%%EndFeature -} stopped { - cleartomark statusdict begin mark { -%%BeginFeature: *PageSize Letter - lettertray -%%EndFeature - } stopped end -} if cleartomark -% now make sure we got what we requested! -gsave initgraphics clippath pathbbox grestore -5 dict begin - 3 -1 roll /yoff exch def 3 -1 roll /xoff exch def - yoff sub /h exch def xoff sub /w exch def - w 576 lt h 756 lt or { - w 2 div xoff add h 2 div yoff add translate - w xoff 2 mul add 612 div - h yoff 2 mul add 792 div - 2 copy gt {exch} if pop dup scale - -306 -396 translate - } if -end - -90 rotate 0 -612 translate -%%EndSetup - -%%Page: 1 1 -SP -IC -15 597 762 -537 RC -255 255 255 SC -424 556 251 -16 RF -0 0 0 SC -424 556 250 -15 RS -255 255 255 SC -423 557 253 -19 RF -0 0 0 SC -423 557 252 -18 RS -0 0 0 SC -% Font[Dialog, 0, 9] -474 9 0 SF -(AliRecPoint) 69 515 542 DS -255 255 255 SC -32 588 167 -59 RF -0 0 0 SC -32 588 166 -58 RS -255 255 255 SC -31 589 169 -19 RF -0 0 0 SC -31 589 168 -18 RS -0 0 0 SC -(AliDigit) 45 93 574 DS -255 255 255 SC -31 571 169 -22 RF -0 0 0 SC -31 571 168 -21 RS -0 0 0 SC -(private fAmp = 0) 104 32 556 DS -255 255 255 SC -31 550 169 -22 RF -0 0 0 SC -31 550 168 -21 RS -0 0 0 SC -(public Float GetAmp\(\)) 133 32 535 DS -255 255 255 SC -168 444 224 -59 RF -0 0 0 SC -168 444 223 -58 RS -255 255 255 SC -167 445 226 -19 RF -0 0 0 SC -167 445 225 -18 RS -0 0 0 SC -(AliGeometry) 75 242 430 DS -255 255 255 SC -167 427 226 -22 RF -0 0 0 SC -167 427 225 -21 RS -255 255 255 SC -167 406 226 -22 RF -0 0 0 SC -167 406 225 -21 RS -0 0 0 SC -(public void ConvertLocalToGlobal\(\)) 212 168 391 DS -255 255 255 SC -224 532 105 -59 RF -0 0 0 SC -224 532 104 -58 RS -255 255 255 SC -223 533 107 -19 RF -0 0 0 SC -223 533 106 -18 RS -0 0 0 SC -(Tnamed) 50 251 518 DS -255 255 255 SC -223 515 107 -22 RF -0 0 0 SC -223 515 106 -21 RS -255 255 255 SC -223 494 107 -22 RF -0 0 0 SC -223 494 106 -21 RS -255 255 255 SC -384 353 293 -59 RF -0 0 0 SC -384 353 292 -58 RS -255 255 255 SC -383 354 295 -19 RF -0 0 0 SC -383 354 294 -18 RS -0 0 0 SC -(AliPHOSRecPoint) 103 479 339 DS -255 255 255 SC -383 336 295 -22 RF -0 0 0 SC -383 336 294 -21 RS -0 0 0 SC -(public int fGeom = AliPHOSGeometry::Instance\(\)) 293 384 321 DS -255 255 255 SC -383 315 295 -22 RF -0 0 0 SC -383 315 294 -21 RS -255 255 255 SC -88 355 275 -67 RF -0 0 0 SC -88 355 274 -66 RS -255 255 255 SC -87 356 277 -19 RF -0 0 0 SC -87 356 276 -18 RS -0 0 0 SC -(AliPHOSGeometry) 109 171 341 DS -255 255 255 SC -87 338 277 -19 RF -0 0 0 SC -87 338 276 -18 RS -0 0 0 SC -(private fGeom = 0) 111 88 323 DS -255 255 255 SC -87 320 277 -33 RF -0 0 0 SC -87 320 276 -32 RS -0 0 0 SC -(public static AliPHOSGeometry * Instance\(\)) 261 88 305 DS -(public void ConvertLocalToGlobal\(\)) 212 88 291 DS -255 255 255 SC -281 299 66 -22 RF -0 0 0 SC -281 299 65 -21 RS -0 0 255 SC -% Font[dialog, 0, 10] -529 10 8 SF -(singleton) 64 282 281 DS -255 255 255 SC -407 249 128 -59 RF -0 0 0 SC -407 249 127 -58 RS -255 255 255 SC -406 250 130 -19 RF -0 0 0 SC -406 250 129 -18 RS -0 0 0 SC -% Font[Dialog, 0, 9] -474 9 0 SF -(AliPHOSEmcRecPoint) 128 407 235 DS -255 255 255 SC -406 232 130 -22 RF -0 0 0 SC -406 232 129 -21 RS -255 255 255 SC -406 211 130 -22 RF -0 0 0 SC -406 211 129 -21 RS -255 255 255 SC -561 251 133 -59 RF -0 0 0 SC -561 251 132 -58 RS -255 255 255 SC -560 252 135 -19 RF -0 0 0 SC -560 252 134 -18 RS -0 0 0 SC -(AliPHOSPpsdRecPoint) 133 561 237 DS -255 255 255 SC -560 234 135 -22 RF -0 0 0 SC -560 234 134 -21 RS -255 255 255 SC -560 213 135 -22 RF -0 0 0 SC -560 213 134 -21 RS -255 255 255 SC -40 249 136 -59 RF -0 0 0 SC -40 249 135 -58 RS -255 255 255 SC -39 250 138 -19 RF -0 0 0 SC -39 250 137 -18 RS -0 0 0 SC -(AliPHOSDigit) 79 68 235 DS -255 255 255 SC -39 232 138 -22 RF -0 0 0 SC -39 232 137 -21 RS -0 0 0 SC -(private fId) 64 40 217 DS -255 255 255 SC -39 211 138 -22 RF -0 0 0 SC -39 211 137 -21 RS -255 255 255 SC -192 205 196 -81 RF -0 0 0 SC -192 205 195 -80 RS -255 255 255 SC -191 206 198 -19 RF -0 0 0 SC -191 206 197 -18 RS -0 0 0 SC -(AliDetector) 67 256 191 DS -255 255 255 SC -191 188 198 -47 RF -0 0 0 SC -191 188 197 -46 RS -0 0 0 SC -(private fDigits = 0) 111 192 173 DS -(private fPoints = 0) 114 192 159 DS -(private fGeom = 0) 111 192 145 DS -255 255 255 SC -191 142 198 -19 RF -0 0 0 SC -191 142 197 -18 RS -255 255 255 SC -552 131 105 -59 RF -0 0 0 SC -552 131 104 -58 RS -255 255 255 SC -551 132 107 -19 RF -0 0 0 SC -551 132 106 -18 RS -0 0 0 SC -(AliPHOS) 50 579 117 DS -255 255 255 SC -551 114 107 -22 RF -0 0 0 SC -551 114 106 -21 RS -255 255 255 SC -551 93 107 -22 RF -0 0 0 SC -551 93 106 -21 RS -0 0 0 SC -false 200 546 423 546 2 PYS -255 255 255 SC -false 422 546 412 541 402 546 412 551 4 PYF -0 0 0 SC -true 422 546 412 541 402 546 412 551 4 PYS -(fDigitsList[0..]=AliDigit*) 142 240 550 DS -(0..*) 20 398 555 DS -0 0 0 SC -false 383 445 383 541 423 541 3 PYS -255 255 255 SC -false 422 541 412 536 402 541 412 546 4 PYF -0 0 0 SC -true 422 541 412 536 402 541 412 546 4 PYS -(AliGeometry*) 81 333 507 DS -0 0 0 SC -false 392 444 424 540 2 PYS -0 0 0 SC -427 526 423 539 DL -413 529 423 539 DL -(uses) 27 412 496 DS -0 0 0 SC -false 263 445 263 472 2 PYS -255 255 255 SC -false 263 471 270 459 256 459 3 PYF -0 0 0 SC -true 263 471 270 459 256 459 3 PYS -0 0 0 SC -false 546 354 546 538 2 PYS -255 255 255 SC -false 546 537 553 525 539 525 3 PYF -0 0 0 SC -true 546 537 553 525 539 525 3 PYS -0 0 0 SC -false 250 356 250 384 2 PYS -255 255 255 SC -false 250 383 257 371 243 371 3 PYF -0 0 0 SC -true 250 383 257 371 243 371 3 PYS -0 0 0 SC -false 473 250 473 293 2 PYS -255 255 255 SC -false 473 292 480 280 466 280 3 PYF -0 0 0 SC -true 473 292 480 280 466 280 3 PYS -0 0 0 SC -false 667 252 667 293 2 PYS -255 255 255 SC -false 667 292 674 280 660 280 3 PYF -0 0 0 SC -true 667 292 674 280 660 280 3 PYS -0 0 0 SC -false 55 250 55 528 2 PYS -255 255 255 SC -false 55 527 62 515 48 515 3 PYF -0 0 0 SC -true 55 527 62 515 48 515 3 PYS -0 0 0 SC -false 551 123 389 123 2 PYS -255 255 255 SC -false 390 123 402 130 402 116 3 PYF -0 0 0 SC -true 390 123 402 130 402 116 3 PYS -0 0 0 SC -false 159 190 159 173 192 173 3 PYS -255 255 255 SC -false 191 173 181 168 171 173 181 178 4 PYF -0 0 0 SC -true 191 173 181 168 171 173 181 178 4 PYS -(0..*) 20 167 182 DS -0 0 0 SC -false 88 333 23 333 23 165 192 165 4 PYS -255 255 255 SC -false 191 165 181 160 171 165 181 170 4 PYF -0 0 0 SC -true 191 165 181 160 171 165 181 170 4 PYS -false 675 549 703 549 703 157 388 157 4 PYS -255 255 255 SC -false 389 157 399 162 409 157 399 152 4 PYF -0 0 0 SC -true 389 157 399 162 409 157 399 152 4 PYS -(0..*) 20 393 136 DS -IC --29985 30597 60000 -60000 RC -% Font[TimesRoman, 0, 9] -420 9 4 SF -(YS Proposal) 63 25 40 DS -% Font[TimesRoman, 0, 9] -420 9 4 SF -(Page 1) 34 737 40 DS -EP - -%%Page: 2 2 -SP -IC -15 597 762 -537 RC -255 255 255 SC -223 494 253 -5 RF -0 0 0 SC -223 494 252 -4 RS -255 255 255 SC -223 490 253 -19 RF -0 0 0 SC -223 490 252 -18 RS -0 0 0 SC -% Font[Dialog, 0, 9] -474 9 0 SF -(AliRecPoint) 69 315 475 DS -255 255 255 SC -223 472 253 -131 RF -0 0 0 SC -223 472 252 -130 RS -0 0 0 SC -(private float fAmp = 0) 136 224 457 DS -(private int * fDigitsList = 0) 163 224 443 DS -(private AliGeometry * fGeom = 0) 200 224 429 DS -(private TVector3 fLocPos = 0) 174 224 415 DS -(private TMatrix * fLocPosM = 0) 188 224 401 DS -(private int fMul = 0) 120 224 387 DS -(private int fMaxDigits = 100) 173 224 373 DS -(private int * fTracksList = 0) 167 224 359 DS -(public int fMaxTracks = 5) 156 224 345 DS -255 255 255 SC -223 342 253 -117 RF -0 0 0 SC -223 342 252 -116 RS -0 0 0 SC -(public void AddDigit\(\)) 133 224 327 DS -(public void GetCovarianceMatrix\(\)) 207 224 313 DS -(public void GetGlobalPosition\(\)) 189 224 299 DS -(public int * GetDigitsList\(\)) 158 224 285 DS -(public void GetLocalPosition\(\)) 180 224 271 DS -(public void GetMultiplicity\(\)) 171 224 257 DS -(public void AddTrack\(\)) 137 224 243 DS -(public void GetTrackList\(\)) 155 224 229 DS -IC --29985 31134 60000 -60000 RC -% Font[TimesRoman, 0, 9] -420 9 4 SF -(YS Proposal) 63 25 40 DS -% Font[TimesRoman, 0, 9] -420 9 4 SF -(Page 2) 34 737 40 DS -EP -%%Trailer -%%Pages: 2 -%%EOF diff --git a/PHOS/PHOS-UML/simulation.ps b/PHOS/PHOS-UML/simulation.ps deleted file mode 100644 index d1c13977f93..00000000000 --- a/PHOS/PHOS-UML/simulation.ps +++ /dev/null @@ -1,476 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: simulation -%%Pages: (atend) -%%PageOrder: Ascend -%%DocumentFonts: Helvetica Helvetica-Bold -%%+Helvetica-Oblique Helvetica-BoldOblique -%%+Times-Roman Times-Bold Times-Italic Times-BoldItalic -%%+Courier Courier-Bold Courier-Oblique Courier-BoldOblique -%%EndComments -%%BeginProlog -/BD {bind def} bind def -/D {def} BD -/ISOF { - dup findfont dup length 1 add dict begin { - 1 index /FID eq {pop pop} {D} ifelse - } forall /Encoding ISOLatin1Encoding D - currentdict end definefont -} BD -/F [ - /Helvetica ISOF - /Helvetica-Bold ISOF - /Helvetica-Oblique ISOF - /Helvetica-BoldOblique ISOF - /Times-Roman ISOF - /Times-Bold ISOF - /Times-Italic ISOF - /Times-BoldItalic ISOF - /Courier ISOF - /Courier-Bold ISOF - /Courier-Oblique ISOF - /Courier-BoldOblique ISOF -] D -/R {4 2 roll moveto 1 index 0 rlineto - 0 exch rlineto neg 0 rlineto closepath} BD -/Adict 8 dict D -Adict /mtrx matrix put -/A { Adict begin - /endangle exch D /startangle exch D - /yrad exch D /xrad exch D - /y exch D /x exch D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale - 0 0 1 startangle endangle arc - savematrix setmatrix - end } BD -/PY { - dup 1 ge {3 1 roll moveto} if - -1 2 {pop lineto} for - {closepath} if -} BD -/CL { dup 0 exch -1 1 arct} BD -/RCL { dup 0 exch 1 1 arct} BD -/RRdict 8 dict D -RRdict /mtrx matrix put -/RR {RRdict begin - /yrad exch D /xrad exch D - /height exch D /width exch D - /y exch D /x exch D - /width width xrad div D /height height yrad div D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale -90 rotate - 1 0 moveto width RCL width 0 translate -90 rotate - height CL height 0 translate -90 rotate - width RCL width 0 translate -90 rotate height CL closepath - savematrix setmatrix - end } BD -/SC {3 {255 div 3 1 roll} repeat setrgbcolor} BD -/SF { - F exch get exch scalefont setfont - (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890) stringwidth pop div - currentfont exch scalefont setfont} BD -/RC {R clip newpath} BD -/IC {initclip} BD -/RF {R fill} BD -/RS {R stroke} BD -/RRF {RR fill} BD -/RRS {RR stroke} BD -/AS {A stroke} BD -/AF {6 -2 roll 2 copy moveto 6 2 roll A fill} BD -/PYS {PY stroke} BD -/PYF {PY eofill} BD -/NZ {dup 1 lt {pop 1} if} BD -/DS { - moveto 1 index stringwidth pop NZ sub - 1 index length 1 sub NZ div 0 - 3 2 roll ashow} BD -/DL {moveto lineto stroke} BD -/S {scale} BD -/SP {/P save D} BD -/EP {showpage P restore} BD -/GS {gsave} BD -/GR {grestore} BD -/CM { - /cmapr 256 array D - /cmapg 256 array D - /cmapb 256 array D - /cmapgray null D - 3 string exch 0 exch 1 exch 1 sub { - currentfile 2 index readhexstring pop - cmapr 2 index 2 index 0 get put - cmapg 2 index 2 index 1 get put - cmapb 2 index 2 index 2 get put - pop pop } for pop -} BD -/DII { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw string D - /colorimage where { - pop - /cimgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - 2 copy get - cmapr 1 index get - cimgstr exch 3 index - 3 mul exch put - cmapg 1 index get - cimgstr exch 3 index - 3 mul 1 add exch put - cmapb 1 index get - cimgstr exch 3 index - 3 mul 2 add exch put - pop pop } for pop cimgstr - } false 3 colorimage - } { - cmapgray null eq { - /cmapgray cmapr length array D - 0 1 cmapr length 1 sub { - cmapgray exch - cmapr 1 index get .299 mul - cmapg 2 index get .587 mul - cmapb 3 index get .114 mul - add add cvi put - } for - } if - imgw imgh 8 [imgw 0 0 imgh neg 0 0] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - imgstr exch 2 copy get - cmapgray exch get put - } for - } image - } ifelse - imgsave restore - GR -} BD -/DI { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - } bind false 3 colorimage - imgsave restore - GR -} BD -%%EndProlog -%%BeginSetup -mark { -%%BeginFeature: ManualFeed false -1 dict dup /ManualFeed false put setpagedevice -%%EndFeature -} stopped { -%%BeginFeature: *ManualFeed false - statusdict /manualfeed false put -%%EndFeature -} if cleartomark mark { -%%BeginFeature: PageSize *Letter -3 dict begin - /PageSize [612 792] def - /ImagingBBox null def - /Policies 1 dict dup/PageSize 3 put def - currentdict end setpagedevice -%%EndFeature -} stopped { - cleartomark statusdict begin mark { -%%BeginFeature: *PageSize Letter - lettertray -%%EndFeature - } stopped end -} if cleartomark -% now make sure we got what we requested! -gsave initgraphics clippath pathbbox grestore -5 dict begin - 3 -1 roll /yoff exch def 3 -1 roll /xoff exch def - yoff sub /h exch def xoff sub /w exch def - w 576 lt h 756 lt or { - w 2 div xoff add h 2 div yoff add translate - w xoff 2 mul add 612 div - h yoff 2 mul add 792 div - 2 copy gt {exch} if pop dup scale - -306 -396 translate - } if -end - -%%EndSetup - -%%Page: 1 1 -SP -IC -15 777 582 -717 RC -255 255 200 SC -80 752 102 -62 RF -255 255 0 SC -80 752 101 -61 RS -255 255 200 SC -79 753 104 -28 RF -255 255 0 SC -79 753 103 -27 RS -255 255 200 SC -80 752 102 -17 RF -0 0 0 SC -% Font[Times, 0, 10] -381 10 4 SF -(<>) 65 98 738 DS -255 255 200 SC -80 739 102 -15 RF -0 0 0 SC -% Font[Dialog, 0, 9] -340 9 0 SF -(AliDetector) 45 108 728 DS -255 255 200 SC -79 726 104 -37 RF -255 255 0 SC -79 726 103 -36 RS -255 255 200 SC -80 616 102 -62 RF -255 255 0 SC -80 616 101 -61 RS -255 255 200 SC -79 617 104 -28 RF -255 255 0 SC -79 617 103 -27 RS -255 255 200 SC -80 616 102 -17 RF -0 0 0 SC -% Font[Times, 0, 10] -381 10 4 SF -(<>) 65 98 602 DS -255 255 200 SC -80 603 102 -15 RF -0 0 0 SC -% Font[Dialog, 0, 9] -340 9 0 SF -(AliPHOS) 33 114 592 DS -255 255 200 SC -79 590 104 -37 RF -255 255 0 SC -79 590 103 -36 RS -0 0 0 SC -false 135 616 135 690 2 PYS -255 255 255 SC -false 135 689 142 677 128 677 3 PYF -0 0 0 SC -true 135 689 142 677 128 677 3 PYS -0 255 255 SC -72 500 120 -94 RF -72 500 119 -93 RS -255 255 255 SC -71 501 122 -16 RF -0 0 0 SC -71 501 121 -15 RS -(AliPHOSv4) 43 110 490 DS -255 255 255 SC -71 486 122 -16 RF -0 0 0 SC -71 486 121 -15 RS -255 255 255 SC -71 471 122 -66 RF -0 0 0 SC -71 471 121 -65 RS -(public void AddHit\(\)) 87 72 460 DS -(public void BuildGeometry\(\)) 117 72 450 DS -(public void CreateGeometry\(\)) 120 72 440 DS -(public void FinishEvent\(\)) 101 72 430 DS -(public void MakeBranch\(\)) 107 72 420 DS -(public void StepManager\(\)) 108 72 410 DS -131 501 131 506 DL -131 511 131 516 DL -131 521 131 526 DL -131 531 131 536 DL -131 541 131 546 DL -131 551 131 553 DL -255 255 255 SC -false 131 552 138 540 124 540 3 PYF -0 0 0 SC -true 131 552 138 540 124 540 3 PYS -0 255 255 SC -294 460 145 -84 RF -294 460 144 -83 RS -255 255 255 SC -293 461 147 -16 RF -0 0 0 SC -293 461 146 -15 RS -(AliPHOSGeometry) 72 330 450 DS -255 255 255 SC -293 446 147 -16 RF -0 0 0 SC -293 446 146 -15 RS -(private many data) 74 294 435 DS -255 255 255 SC -293 431 147 -56 RF -0 0 0 SC -293 431 146 -55 RS -(public void IsInitialized\(\)) 101 294 420 DS -(public void RelPosInAlice\(\)) 109 294 410 DS -(public void RelPosInModule\(\)) 122 294 400 DS -(public void RelToAbsNumbering\(\)) 145 294 390 DS -(public void AbsToRelNumbering\(\)) 145 294 380 DS -false 193 453 293 453 2 PYS -255 255 255 SC -false 193 453 203 458 213 453 203 448 4 PYF -0 0 0 SC -true 193 453 203 458 213 453 203 448 4 PYS -( * fGeom) 38 224 459 DS -255 255 200 SC -320 328 102 -62 RF -255 255 0 SC -320 328 101 -61 RS -255 255 200 SC -319 329 104 -28 RF -255 255 0 SC -319 329 103 -27 RS -255 255 200 SC -320 328 102 -17 RF -0 0 0 SC -% Font[Times, 0, 10] -381 10 4 SF -(<>) 65 338 314 DS -255 255 200 SC -320 315 102 -15 RF -0 0 0 SC -% Font[Dialog, 0, 9] -340 9 0 SF -(AliHit) 23 359 304 DS -255 255 200 SC -319 302 104 -37 RF -255 255 0 SC -319 302 103 -36 RS -0 255 255 SC -120 332 114 -64 RF -120 332 113 -63 RS -255 255 255 SC -119 333 116 -16 RF -0 0 0 SC -119 333 115 -15 RS -(AliPHOSHit) 45 154 322 DS -255 255 255 SC -119 318 116 -26 RF -0 0 0 SC -119 318 115 -25 RS -(private float fEnergy = 0) 98 120 307 DS -(private int fId = 0) 72 120 297 DS -255 255 255 SC -119 293 116 -26 RF -0 0 0 SC -119 293 115 -25 RS -(public float GetEnergy\(\)) 97 120 282 DS -(public int GetId\(\)) 71 120 272 DS -235 305 240 305 DL -245 305 250 305 DL -255 305 260 305 DL -265 305 270 305 DL -275 305 280 305 DL -285 305 290 305 DL -295 305 300 305 DL -305 305 310 305 DL -315 305 319 305 DL -255 255 255 SC -false 318 305 306 298 306 312 3 PYF -0 0 0 SC -true 318 305 306 298 306 312 3 PYS -false 152 332 152 406 2 PYS -145 344 152 332 DL -159 344 152 332 DL -(create) 22 131 365 DS -(0..*) 16 129 343 DS -255 255 200 SC -320 216 102 -62 RF -255 255 0 SC -320 216 101 -61 RS -255 255 200 SC -319 217 104 -28 RF -255 255 0 SC -319 217 103 -27 RS -255 255 200 SC -320 216 102 -17 RF -0 0 0 SC -% Font[Times, 0, 10] -381 10 4 SF -(<>) 65 338 202 DS -255 255 200 SC -320 203 102 -15 RF -0 0 0 SC -% Font[Dialog, 0, 9] -340 9 0 SF -(AliDigit) 31 355 192 DS -255 255 200 SC -319 190 104 -37 RF -255 255 0 SC -319 190 103 -36 RS -0 255 255 SC -120 220 114 -64 RF -120 220 113 -63 RS -255 255 255 SC -119 221 116 -16 RF -0 0 0 SC -119 221 115 -15 RS -(AliPHOSDigit) 53 150 210 DS -255 255 255 SC -119 206 116 -26 RF -0 0 0 SC -119 206 115 -25 RS -(private float fEnergy = 0) 98 120 195 DS -(private int fId = 0) 72 120 185 DS -255 255 255 SC -119 181 116 -26 RF -0 0 0 SC -119 181 115 -25 RS -(public float GetEnergy\(\)) 97 120 170 DS -(public int GetId\(\)) 71 120 160 DS -255 255 255 SC -415 377 47 -16 RF -200 60 60 SC -415 377 46 -15 RS -255 175 175 SC -416 376 45 -12 RF -0 0 255 SC -% Font[dialog, 0, 10] -383 10 8 SF -(singleton) 45 416 364 DS -0 0 0 SC -234 193 239 193 DL -244 193 249 193 DL -254 193 259 193 DL -264 193 269 193 DL -274 193 279 193 DL -284 193 289 193 DL -294 193 299 193 DL -304 193 309 193 DL -314 193 319 193 DL -255 255 255 SC -false 319 193 307 186 307 200 3 PYF -0 0 0 SC -true 319 193 307 186 307 200 3 PYS -false 87 406 87 209 120 209 3 PYS -107 202 119 209 DL -107 216 119 209 DL -% Font[Dialog, 0, 9] -340 9 0 SF -(create) 22 61 367 DS -(0..*) 16 97 220 DS -IC --29985 30777 60000 -60000 RC -% Font[TimesRoman, 0, 9] -314 9 4 SF -(simulation) 35 25 40 DS -% Font[TimesRoman, 0, 9] -314 9 4 SF -(Page 1) 23 557 40 DS -EP -%%Trailer -%%Pages: 1 -%%EOF diff --git a/PHOS/PHOS-UML/subtracking.ps b/PHOS/PHOS-UML/subtracking.ps deleted file mode 100644 index f6d68ee59e7..00000000000 --- a/PHOS/PHOS-UML/subtracking.ps +++ /dev/null @@ -1,422 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: subtracking -%%Pages: (atend) -%%PageOrder: Ascend -%%DocumentFonts: Helvetica Helvetica-Bold -%%+Helvetica-Oblique Helvetica-BoldOblique -%%+Times-Roman Times-Bold Times-Italic Times-BoldItalic -%%+Courier Courier-Bold Courier-Oblique Courier-BoldOblique -%%EndComments -%%BeginProlog -/BD {bind def} bind def -/D {def} BD -/ISOF { - dup findfont dup length 1 add dict begin { - 1 index /FID eq {pop pop} {D} ifelse - } forall /Encoding ISOLatin1Encoding D - currentdict end definefont -} BD -/F [ - /Helvetica ISOF - /Helvetica-Bold ISOF - /Helvetica-Oblique ISOF - /Helvetica-BoldOblique ISOF - /Times-Roman ISOF - /Times-Bold ISOF - /Times-Italic ISOF - /Times-BoldItalic ISOF - /Courier ISOF - /Courier-Bold ISOF - /Courier-Oblique ISOF - /Courier-BoldOblique ISOF -] D -/R {4 2 roll moveto 1 index 0 rlineto - 0 exch rlineto neg 0 rlineto closepath} BD -/Adict 8 dict D -Adict /mtrx matrix put -/A { Adict begin - /endangle exch D /startangle exch D - /yrad exch D /xrad exch D - /y exch D /x exch D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale - 0 0 1 startangle endangle arc - savematrix setmatrix - end } BD -/PY { - dup 1 ge {3 1 roll moveto} if - -1 2 {pop lineto} for - {closepath} if -} BD -/CL { dup 0 exch -1 1 arct} BD -/RCL { dup 0 exch 1 1 arct} BD -/RRdict 8 dict D -RRdict /mtrx matrix put -/RR {RRdict begin - /yrad exch D /xrad exch D - /height exch D /width exch D - /y exch D /x exch D - /width width xrad div D /height height yrad div D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale -90 rotate - 1 0 moveto width RCL width 0 translate -90 rotate - height CL height 0 translate -90 rotate - width RCL width 0 translate -90 rotate height CL closepath - savematrix setmatrix - end } BD -/SC {3 {255 div 3 1 roll} repeat setrgbcolor} BD -/SF { - F exch get exch scalefont setfont - (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890) stringwidth pop div - currentfont exch scalefont setfont} BD -/RC {R clip newpath} BD -/IC {initclip} BD -/RF {R fill} BD -/RS {R stroke} BD -/RRF {RR fill} BD -/RRS {RR stroke} BD -/AS {A stroke} BD -/AF {6 -2 roll 2 copy moveto 6 2 roll A fill} BD -/PYS {PY stroke} BD -/PYF {PY eofill} BD -/NZ {dup 1 lt {pop 1} if} BD -/DS { - moveto 1 index stringwidth pop NZ sub - 1 index length 1 sub NZ div 0 - 3 2 roll ashow} BD -/DL {moveto lineto stroke} BD -/S {scale} BD -/SP {/P save D} BD -/EP {showpage P restore} BD -/GS {gsave} BD -/GR {grestore} BD -/CM { - /cmapr 256 array D - /cmapg 256 array D - /cmapb 256 array D - /cmapgray null D - 3 string exch 0 exch 1 exch 1 sub { - currentfile 2 index readhexstring pop - cmapr 2 index 2 index 0 get put - cmapg 2 index 2 index 1 get put - cmapb 2 index 2 index 2 get put - pop pop } for pop -} BD -/DII { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw string D - /colorimage where { - pop - /cimgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - 2 copy get - cmapr 1 index get - cimgstr exch 3 index - 3 mul exch put - cmapg 1 index get - cimgstr exch 3 index - 3 mul 1 add exch put - cmapb 1 index get - cimgstr exch 3 index - 3 mul 2 add exch put - pop pop } for pop cimgstr - } false 3 colorimage - } { - cmapgray null eq { - /cmapgray cmapr length array D - 0 1 cmapr length 1 sub { - cmapgray exch - cmapr 1 index get .299 mul - cmapg 2 index get .587 mul - cmapb 3 index get .114 mul - add add cvi put - } for - } if - imgw imgh 8 [imgw 0 0 imgh neg 0 0] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - imgstr exch 2 copy get - cmapgray exch get put - } for - } image - } ifelse - imgsave restore - GR -} BD -/DI { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - } bind false 3 colorimage - imgsave restore - GR -} BD -%%EndProlog -%%BeginSetup -mark { -%%BeginFeature: ManualFeed false -1 dict dup /ManualFeed false put setpagedevice -%%EndFeature -} stopped { -%%BeginFeature: *ManualFeed false - statusdict /manualfeed false put -%%EndFeature -} if cleartomark mark { -%%BeginFeature: PageSize *Letter -3 dict begin - /PageSize [612 792] def - /ImagingBBox null def - /Policies 1 dict dup/PageSize 3 put def - currentdict end setpagedevice -%%EndFeature -} stopped { - cleartomark statusdict begin mark { -%%BeginFeature: *PageSize Letter - lettertray -%%EndFeature - } stopped end -} if cleartomark -% now make sure we got what we requested! -gsave initgraphics clippath pathbbox grestore -5 dict begin - 3 -1 roll /yoff exch def 3 -1 roll /xoff exch def - yoff sub /h exch def xoff sub /w exch def - w 576 lt h 756 lt or { - w 2 div xoff add h 2 div yoff add translate - w xoff 2 mul add 612 div - h yoff 2 mul add 792 div - 2 copy gt {exch} if pop dup scale - -306 -396 translate - } if -end - -%%EndSetup - -%%Page: 1 1 -SP -IC -15 777 582 -717 RC -255 255 200 SC -48 760 121 -62 RF -255 255 0 SC -48 760 120 -61 RS -255 255 200 SC -47 761 123 -28 RF -255 255 0 SC -47 761 122 -27 RS -255 255 200 SC -48 760 121 -17 RF -0 0 0 SC -% Font[Times, 0, 10] -381 10 4 SF -(<>) 65 76 746 DS -255 255 200 SC -48 747 121 -15 RF -0 0 0 SC -% Font[Dialog, 0, 9] -340 9 0 SF -(AliPHOSSubTracker) 79 69 736 DS -255 255 200 SC -47 734 123 -37 RF -255 255 0 SC -47 734 122 -36 RS -0 0 0 SC -(public void MakeSubTracks\(\)) 121 48 723 DS -0 255 255 SC -32 628 154 -58 RF -32 628 153 -57 RS -255 255 255 SC -31 629 156 -16 RF -0 0 0 SC -31 629 155 -15 RS -(AliPHOSSubTrackerv1) 89 64 618 DS -255 255 255 SC -31 614 156 -28 RF -0 0 0 SC -31 614 155 -27 RS -(public float fDelta = 0) 91 32 603 DS -(public float fR0 = 0) 83 32 593 DS -255 255 255 SC -31 587 156 -18 RF -0 0 0 SC -31 587 155 -17 RS -(public float GetDistanceInPHOSPlane\(\)) 154 32 576 DS -111 629 111 634 DL -111 639 111 644 DL -111 649 111 654 DL -111 659 111 664 DL -111 669 111 674 DL -111 679 111 684 DL -111 689 111 694 DL -255 255 255 SC -false 111 696 118 684 104 684 3 PYF -0 0 0 SC -true 111 696 118 684 104 684 3 PYS -0 255 255 SC -285 629 147 -5 RF -285 629 146 -4 RS -255 255 255 SC -285 625 147 -16 RF -0 0 0 SC -285 625 146 -15 RS -(AliPHOSGeometry) 72 322 614 DS -255 255 255 SC -285 610 147 -16 RF -0 0 0 SC -285 610 146 -15 RS -(private many data) 74 286 599 DS -255 255 255 SC -285 595 147 -56 RF -0 0 0 SC -285 595 146 -55 RS -(public void IsInitialized\(\)) 101 286 584 DS -(public void RelPosInAlice\(\)) 109 286 574 DS -(public void RelPosInModule\(\)) 122 286 564 DS -(public void RelToAbsNumbering\(\)) 145 286 554 DS -(public void AbsToRelNumbering\(\)) 145 286 544 DS -255 255 255 SC -399 569 47 -16 RF -200 60 60 SC -399 569 46 -15 RS -255 175 175 SC -400 568 45 -12 RF -0 0 255 SC -% Font[dialog, 0, 10] -383 10 8 SF -(singleton) 45 400 556 DS -0 0 0 SC -false 186 624 285 624 2 PYS -272 617 284 624 DL -272 631 284 624 DL -% Font[Dialog, 0, 9] -340 9 0 SF -(use) 14 214 605 DS -0 255 255 SC -24 488 194 -74 RF -24 488 193 -73 RS -255 255 255 SC -23 489 196 -16 RF -0 0 0 SC -23 489 195 -15 RS -(AliPHOSSubTrack) 72 85 478 DS -255 255 255 SC -23 474 196 -46 RF -0 0 0 SC -23 474 195 -45 RS -(private float fCutOnDispersion = 1.5) 153 24 463 DS -(public AliPHOSEmcCluster * fEmcCluster = 0) 183 24 453 DS -(public AliPHOSPpsdCluster * fPpsdLow = 0) 182 24 443 DS -(public AliPHOSPpsdCluster * fPpsdUp = 0) 178 24 433 DS -255 255 255 SC -23 429 196 -16 RF -0 0 0 SC -23 429 195 -15 RS -false 111 569 111 489 2 PYS -104 502 111 490 DL -118 502 111 490 DL -(create) 22 85 530 DS -0 255 255 SC -367 492 168 -5 RF -367 492 167 -4 RS -255 255 255 SC -367 488 168 -16 RF -0 0 0 SC -367 488 167 -15 RS -(AliPHOSEmcCluster) 78 412 477 DS -255 255 255 SC -367 473 168 -66 RF -0 0 0 SC -367 473 167 -65 RS -(private DigitsList * fDigitsList = 0) 137 368 462 DS -(private float fEnergy = 0) 98 368 452 DS -(private int fMultiplicity = 0) 108 368 442 DS -(private float fDelta = 4.) 94 368 432 DS -(private float fLocMaxCut = 0.6) 128 368 422 DS -(public float fW0 = 4.) 88 368 412 DS -255 255 255 SC -367 408 168 -126 RF -0 0 0 SC -367 408 167 -125 RS -(public bool AreNeighbours\(\)) 122 368 397 DS -(public void Compare\(\)) 94 368 387 DS -(public void GetAbsPosition\(\)) 120 368 377 DS -(public float GetDispersion\(\)) 114 368 367 DS -(public void GetElipsAxis\(\)) 107 368 357 DS -(public float GetMaximalEnergy\(\)) 131 368 347 DS -(public void GetMultiplicityAtLevel\(\)) 142 368 337 DS -(public void GetNumberOfLocalMaxima\(\)) 166 368 327 DS -(public void GetRelPosition\(\)) 115 368 317 DS -(public void GetTotalEnergy\(\)) 118 368 307 DS -(public void SetLocalMaxCut\(\)) 121 368 297 DS -(public void SetLowWeightCut\(\)) 129 368 287 DS -false 218 487 367 487 2 PYS -255 255 255 SC -false 218 487 228 492 238 487 228 482 4 PYF -0 0 0 SC -true 218 487 228 492 238 487 228 482 4 PYS -(0..*) 16 225 498 DS -0 255 255 SC -383 252 139 -5 RF -383 252 138 -4 RS -255 255 255 SC -383 248 139 -16 RF -0 0 0 SC -383 248 138 -15 RS -(AliPHOSPpsdCluster) 82 411 237 DS -255 255 255 SC -383 233 139 -36 RF -0 0 0 SC -383 233 138 -35 RS -(public DigitsList fDigitsList = 0) 127 384 222 DS -(private float fEnergy = 0) 98 384 212 DS -(private int fMultiplicity = 0) 108 384 202 DS -255 255 255 SC -383 198 139 -36 RF -0 0 0 SC -383 198 138 -35 RS -(public int Compare\(\)) 87 384 187 DS -(public void GetRelPosition\(\)) 115 384 177 DS -(public bool GetUp\(\)) 85 384 167 DS -false 218 441 303 441 303 249 383 249 4 PYS -255 255 255 SC -false 218 441 228 446 238 441 228 436 4 PYF -0 0 0 SC -true 218 441 228 446 238 441 228 436 4 PYS -(0..*) 16 225 452 DS -false 167 628 167 657 479 657 479 492 4 PYS -472 505 479 493 DL -486 505 479 493 DL -(use) 14 166 638 DS -(0..*) 16 486 503 DS -false 151 628 151 681 567 681 567 249 522 249 5 PYS -535 256 523 249 DL -535 242 523 249 DL -(use) 14 569 674 DS -(0..*) 16 529 230 DS -IC --29985 30777 60000 -60000 RC -% Font[TimesRoman, 0, 9] -314 9 4 SF -(subtracking) 38 25 40 DS -% Font[TimesRoman, 0, 9] -314 9 4 SF -(Page 1) 23 557 40 DS -EP -%%Trailer -%%Pages: 1 -%%EOF diff --git a/PHOS/PHOS-UML/usecasefastsimulation.gif b/PHOS/PHOS-UML/usecasefastsimulation.gif deleted file mode 100644 index 50ae8bb903b..00000000000 Binary files a/PHOS/PHOS-UML/usecasefastsimulation.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/usecasefastsimulation.ps b/PHOS/PHOS-UML/usecasefastsimulation.ps deleted file mode 100644 index 9f2d64aac20..00000000000 --- a/PHOS/PHOS-UML/usecasefastsimulation.ps +++ /dev/null @@ -1,343 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: use case fast simulation -%%Pages: (atend) -%%PageOrder: Ascend -%%DocumentFonts: Helvetica Helvetica-Bold -%%+Helvetica-Oblique Helvetica-BoldOblique -%%+Times-Roman Times-Bold Times-Italic Times-BoldItalic -%%+Courier Courier-Bold Courier-Oblique Courier-BoldOblique -%%EndComments -%%BeginProlog -/BD {bind def} bind def -/D {def} BD -/ISOF { - dup findfont dup length 1 add dict begin { - 1 index /FID eq {pop pop} {D} ifelse - } forall /Encoding ISOLatin1Encoding D - currentdict end definefont -} BD -/F [ - /Helvetica ISOF - /Helvetica-Bold ISOF - /Helvetica-Oblique ISOF - /Helvetica-BoldOblique ISOF - /Times-Roman ISOF - /Times-Bold ISOF - /Times-Italic ISOF - /Times-BoldItalic ISOF - /Courier ISOF - /Courier-Bold ISOF - /Courier-Oblique ISOF - /Courier-BoldOblique ISOF -] D -/R {4 2 roll moveto 1 index 0 rlineto - 0 exch rlineto neg 0 rlineto closepath} BD -/Adict 8 dict D -Adict /mtrx matrix put -/A { Adict begin - /endangle exch D /startangle exch D - /yrad exch D /xrad exch D - /y exch D /x exch D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale - 0 0 1 startangle endangle arc - savematrix setmatrix - end } BD -/PY { - dup 1 ge {3 1 roll moveto} if - -1 2 {pop lineto} for - {closepath} if -} BD -/CL { dup 0 exch -1 1 arct} BD -/RCL { dup 0 exch 1 1 arct} BD -/RRdict 8 dict D -RRdict /mtrx matrix put -/RR {RRdict begin - /yrad exch D /xrad exch D - /height exch D /width exch D - /y exch D /x exch D - /width width xrad div D /height height yrad div D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale -90 rotate - 1 0 moveto width RCL width 0 translate -90 rotate - height CL height 0 translate -90 rotate - width RCL width 0 translate -90 rotate height CL closepath - savematrix setmatrix - end } BD -/SC {3 {255 div 3 1 roll} repeat setrgbcolor} BD -/SF { - F exch get exch scalefont setfont - (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890) stringwidth pop div - currentfont exch scalefont setfont} BD -/RC {R clip newpath} BD -/IC {initclip} BD -/RF {R fill} BD -/RS {R stroke} BD -/RRF {RR fill} BD -/RRS {RR stroke} BD -/AS {A stroke} BD -/AF {6 -2 roll 2 copy moveto 6 2 roll A fill} BD -/PYS {PY stroke} BD -/PYF {PY eofill} BD -/NZ {dup 1 lt {pop 1} if} BD -/DS { - moveto 1 index stringwidth pop NZ sub - 1 index length 1 sub NZ div 0 - 3 2 roll ashow} BD -/DL {moveto lineto stroke} BD -/S {scale} BD -/SP {/P save D} BD -/EP {showpage P restore} BD -/GS {gsave} BD -/GR {grestore} BD -/CM { - /cmapr 256 array D - /cmapg 256 array D - /cmapb 256 array D - /cmapgray null D - 3 string exch 0 exch 1 exch 1 sub { - currentfile 2 index readhexstring pop - cmapr 2 index 2 index 0 get put - cmapg 2 index 2 index 1 get put - cmapb 2 index 2 index 2 get put - pop pop } for pop -} BD -/DII { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw string D - /colorimage where { - pop - /cimgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - 2 copy get - cmapr 1 index get - cimgstr exch 3 index - 3 mul exch put - cmapg 1 index get - cimgstr exch 3 index - 3 mul 1 add exch put - cmapb 1 index get - cimgstr exch 3 index - 3 mul 2 add exch put - pop pop } for pop cimgstr - } false 3 colorimage - } { - cmapgray null eq { - /cmapgray cmapr length array D - 0 1 cmapr length 1 sub { - cmapgray exch - cmapr 1 index get .299 mul - cmapg 2 index get .587 mul - cmapb 3 index get .114 mul - add add cvi put - } for - } if - imgw imgh 8 [imgw 0 0 imgh neg 0 0] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - imgstr exch 2 copy get - cmapgray exch get put - } for - } image - } ifelse - imgsave restore - GR -} BD -/DI { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - } bind false 3 colorimage - imgsave restore - GR -} BD -%%EndProlog -%%BeginSetup -mark { -%%BeginFeature: ManualFeed false -1 dict dup /ManualFeed false put setpagedevice -%%EndFeature -} stopped { -%%BeginFeature: *ManualFeed false - statusdict /manualfeed false put -%%EndFeature -} if cleartomark mark { -%%BeginFeature: PageSize *Letter -3 dict begin - /PageSize [612 792] def - /ImagingBBox null def - /Policies 1 dict dup/PageSize 3 put def - currentdict end setpagedevice -%%EndFeature -} stopped { - cleartomark statusdict begin mark { -%%BeginFeature: *PageSize Letter - lettertray -%%EndFeature - } stopped end -} if cleartomark -% now make sure we got what we requested! -gsave initgraphics clippath pathbbox grestore -5 dict begin - 3 -1 roll /yoff exch def 3 -1 roll /xoff exch def - yoff sub /h exch def xoff sub /w exch def - w 576 lt h 756 lt or { - w 2 div xoff add h 2 div yoff add translate - w xoff 2 mul add 612 div - h yoff 2 mul add 792 div - 2 copy gt {exch} if pop dup scale - -306 -396 translate - } if -end - -90 rotate 0 -612 translate -%%EndSetup - -%%Page: 1 1 -SP -IC -15 597 762 -537 RC -128 128 128 SC -114 522 10 15 0 360 AF -113 523 9 14 0 360 AS -255 255 255 SC -114 522 10 15 0 360 AF -0 0 0 SC -113 523 9 14 0 360 AS -114 507 114 487 DL -104 497 124 497 DL -114 487 109 472 DL -114 487 119 472 DL -% Font[Dialog, 0, 9] -474 9 0 SF -(PHOS actor) 68 80 455 DS -255 255 255 SC -238 571 61 26 0 360 AF -0 0 0 SC -238 572 61 25 0 360 AS -255 255 255 SC -238 571 61 26 0 360 AF -0 0 0 SC -238 572 61 25 0 360 AS -(1 . Get a Particle) 101 188 572 DS -(from TreeK) 68 204 558 DS -false 149 537 177 545 2 PYS -255 255 255 SC -324 497 91 36 0 360 AF -0 0 0 SC -323 498 90 35 0 360 AS -255 255 255 SC -324 497 91 36 0 360 AF -0 0 0 SC -323 498 90 35 0 360 AS -(2. What is the incidence) 146 251 505 DS -(of other detectors on) 127 260 491 DS -(the way of the particle) 139 254 477 DS -false 149 501 233 501 2 PYS -255 255 255 SC -321 363 88 26 0 360 AF -0 0 0 SC -321 364 88 25 0 360 AS -255 255 255 SC -321 363 88 26 0 360 AF -0 0 0 SC -321 364 88 25 0 360 AS -(3. Get the average PHOS) 149 247 364 DS -(response to this particle) 147 248 350 DS -false 149 452 233 389 2 PYS -255 255 255 SC -141 292 77 33 0 360 AF -0 0 0 SC -141 293 77 32 0 360 AS -255 255 255 SC -141 292 77 33 0 360 AF -0 0 0 SC -141 293 77 32 0 360 AS -(4. Output the type) 114 84 300 DS -(and properties of the ) 133 75 286 DS -(detected particle) 103 90 272 DS -false 135 452 135 325 2 PYS -255 255 255 SC -574 556 79 33 0 360 AF -0 0 0 SC -573 557 78 32 0 360 AS -255 255 255 SC -574 556 79 33 0 360 AF -0 0 0 SC -573 557 78 32 0 360 AS -(Photon: ) 50 549 564 DS -(conversion probability) 136 506 550 DS -(energy loss) 68 540 536 DS -false 495 533 415 533 2 PYS -255 255 255 SC -false 416 533 428 540 428 526 3 PYF -0 0 0 SC -true 416 533 428 540 428 526 3 PYS -(<>) 80 415 517 DS -255 255 255 SC -611 469 108 48 0 360 AF -0 0 0 SC -610 470 107 47 0 360 AS -255 255 255 SC -611 469 108 48 0 360 AF -0 0 0 SC -610 470 107 47 0 360 AS -(Charged and Neutral hadrons:) 183 519 484 DS -(energy loss) 68 576 470 DS -(momentum smearing) 131 545 456 DS -false 503 469 415 469 2 PYS -255 255 255 SC -false 416 469 428 476 428 462 3 PYF -0 0 0 SC -true 416 469 428 476 428 462 3 PYS -(<>) 80 419 453 DS -255 255 255 SC -607 365 104 40 0 360 AF -0 0 0 SC -606 366 103 39 0 360 AS -255 255 255 SC -607 365 104 40 0 360 AF -0 0 0 SC -606 366 103 39 0 360 AS -(Probability to ) 87 563 373 DS -(identify a photon, ) 113 550 359 DS -(a charged or neutral hadron) 170 522 345 DS -false 503 365 410 365 2 PYS -255 255 255 SC -609 275 82 26 0 360 AF -0 0 0 SC -609 276 82 25 0 360 AS -255 255 255 SC -609 275 82 26 0 360 AF -0 0 0 SC -609 276 82 25 0 360 AS -(Energy and momentum) 143 538 276 DS -(resolution) 61 579 262 DS -false 410 337 527 301 2 PYS -IC --29985 30597 60000 -60000 RC -% Font[TimesRoman, 0, 9] -420 9 4 SF -(use case fast simulation) 121 25 40 DS -% Font[TimesRoman, 0, 9] -420 9 4 SF -(Page 1) 34 737 40 DS -EP -%%Trailer -%%Pages: 1 -%%EOF diff --git a/PHOS/PHOS-UML/usecasegeneral.gif b/PHOS/PHOS-UML/usecasegeneral.gif deleted file mode 100644 index 5b9bda7d2fb..00000000000 Binary files a/PHOS/PHOS-UML/usecasegeneral.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/usecasegeneral.ps b/PHOS/PHOS-UML/usecasegeneral.ps deleted file mode 100644 index e2dcdd9c6ed..00000000000 --- a/PHOS/PHOS-UML/usecasegeneral.ps +++ /dev/null @@ -1,440 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: use case general -%%Pages: (atend) -%%PageOrder: Ascend -%%DocumentFonts: Helvetica Helvetica-Bold -%%+Helvetica-Oblique Helvetica-BoldOblique -%%+Times-Roman Times-Bold Times-Italic Times-BoldItalic -%%+Courier Courier-Bold Courier-Oblique Courier-BoldOblique -%%EndComments -%%BeginProlog -/BD {bind def} bind def -/D {def} BD -/ISOF { - dup findfont dup length 1 add dict begin { - 1 index /FID eq {pop pop} {D} ifelse - } forall /Encoding ISOLatin1Encoding D - currentdict end definefont -} BD -/F [ - /Helvetica ISOF - /Helvetica-Bold ISOF - /Helvetica-Oblique ISOF - /Helvetica-BoldOblique ISOF - /Times-Roman ISOF - /Times-Bold ISOF - /Times-Italic ISOF - /Times-BoldItalic ISOF - /Courier ISOF - /Courier-Bold ISOF - /Courier-Oblique ISOF - /Courier-BoldOblique ISOF -] D -/R {4 2 roll moveto 1 index 0 rlineto - 0 exch rlineto neg 0 rlineto closepath} BD -/Adict 8 dict D -Adict /mtrx matrix put -/A { Adict begin - /endangle exch D /startangle exch D - /yrad exch D /xrad exch D - /y exch D /x exch D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale - 0 0 1 startangle endangle arc - savematrix setmatrix - end } BD -/PY { - dup 1 ge {3 1 roll moveto} if - -1 2 {pop lineto} for - {closepath} if -} BD -/CL { dup 0 exch -1 1 arct} BD -/RCL { dup 0 exch 1 1 arct} BD -/RRdict 8 dict D -RRdict /mtrx matrix put -/RR {RRdict begin - /yrad exch D /xrad exch D - /height exch D /width exch D - /y exch D /x exch D - /width width xrad div D /height height yrad div D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale -90 rotate - 1 0 moveto width RCL width 0 translate -90 rotate - height CL height 0 translate -90 rotate - width RCL width 0 translate -90 rotate height CL closepath - savematrix setmatrix - end } BD -/SC {3 {255 div 3 1 roll} repeat setrgbcolor} BD -/SF { - F exch get exch scalefont setfont - (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890) stringwidth pop div - currentfont exch scalefont setfont} BD -/RC {R clip newpath} BD -/IC {initclip} BD -/RF {R fill} BD -/RS {R stroke} BD -/RRF {RR fill} BD -/RRS {RR stroke} BD -/AS {A stroke} BD -/AF {6 -2 roll 2 copy moveto 6 2 roll A fill} BD -/PYS {PY stroke} BD -/PYF {PY eofill} BD -/NZ {dup 1 lt {pop 1} if} BD -/DS { - moveto 1 index stringwidth pop NZ sub - 1 index length 1 sub NZ div 0 - 3 2 roll ashow} BD -/DL {moveto lineto stroke} BD -/S {scale} BD -/SP {/P save D} BD -/EP {showpage P restore} BD -/GS {gsave} BD -/GR {grestore} BD -/CM { - /cmapr 256 array D - /cmapg 256 array D - /cmapb 256 array D - /cmapgray null D - 3 string exch 0 exch 1 exch 1 sub { - currentfile 2 index readhexstring pop - cmapr 2 index 2 index 0 get put - cmapg 2 index 2 index 1 get put - cmapb 2 index 2 index 2 get put - pop pop } for pop -} BD -/DII { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw string D - /colorimage where { - pop - /cimgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - 2 copy get - cmapr 1 index get - cimgstr exch 3 index - 3 mul exch put - cmapg 1 index get - cimgstr exch 3 index - 3 mul 1 add exch put - cmapb 1 index get - cimgstr exch 3 index - 3 mul 2 add exch put - pop pop } for pop cimgstr - } false 3 colorimage - } { - cmapgray null eq { - /cmapgray cmapr length array D - 0 1 cmapr length 1 sub { - cmapgray exch - cmapr 1 index get .299 mul - cmapg 2 index get .587 mul - cmapb 3 index get .114 mul - add add cvi put - } for - } if - imgw imgh 8 [imgw 0 0 imgh neg 0 0] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - imgstr exch 2 copy get - cmapgray exch get put - } for - } image - } ifelse - imgsave restore - GR -} BD -/DI { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - } bind false 3 colorimage - imgsave restore - GR -} BD -%%EndProlog -%%BeginSetup -mark { -%%BeginFeature: ManualFeed false -1 dict dup /ManualFeed false put setpagedevice -%%EndFeature -} stopped { -%%BeginFeature: *ManualFeed false - statusdict /manualfeed false put -%%EndFeature -} if cleartomark mark { -%%BeginFeature: PageSize *Letter -3 dict begin - /PageSize [612 792] def - /ImagingBBox null def - /Policies 1 dict dup/PageSize 3 put def - currentdict end setpagedevice -%%EndFeature -} stopped { - cleartomark statusdict begin mark { -%%BeginFeature: *PageSize Letter - lettertray -%%EndFeature - } stopped end -} if cleartomark -% now make sure we got what we requested! -gsave initgraphics clippath pathbbox grestore -5 dict begin - 3 -1 roll /yoff exch def 3 -1 roll /xoff exch def - yoff sub /h exch def xoff sub /w exch def - w 576 lt h 756 lt or { - w 2 div xoff add h 2 div yoff add translate - w xoff 2 mul add 612 div - h yoff 2 mul add 792 div - 2 copy gt {exch} if pop dup scale - -306 -396 translate - } if -end - -90 rotate 0 -612 translate -%%EndSetup - -%%Page: 1 1 -SP -IC -15 597 762 -537 RC -128 128 128 SC -94 470 10 15 0 360 AF -93 471 9 14 0 360 AS -200 255 255 SC -94 470 10 15 0 360 AF -60 60 200 SC -93 471 9 14 0 360 AS -94 455 94 435 DL -84 445 104 445 DL -94 435 89 420 DL -94 435 99 420 DL -0 0 0 SC -% Font[Dialog, 0, 9] -340 9 0 SF -(PHOS actor) 45 72 404 DS -255 255 255 SC -265 561 65 20 0 360 AF -0 0 0 SC -264 562 64 19 0 360 AS -200 255 255 SC -265 561 65 20 0 360 AF -60 60 200 SC -264 562 64 19 0 360 AS -0 0 0 SC -(Create/Build the geometry) 108 211 558 DS -60 60 200 SC -false 118 485 200 541 2 PYS -255 255 255 SC -451 561 68 20 0 360 AF -0 0 0 SC -451 562 68 19 0 360 AS -200 255 255 SC -451 561 68 20 0 360 AF -60 60 200 SC -451 562 68 19 0 360 AS -0 0 0 SC -(description of the geometry) 115 394 558 DS -60 60 200 SC -false 330 565 383 565 2 PYS -0 0 0 SC -342 572 330 565 DL -342 558 330 565 DL -(use) 14 341 546 DS -255 255 255 SC -266 471 50 20 0 360 AF -0 0 0 SC -265 472 49 19 0 360 AS -200 255 255 SC -266 471 50 20 0 360 AF -60 60 200 SC -265 472 49 19 0 360 AS -0 0 0 SC -(generate events) 62 235 468 DS -60 60 200 SC -false 118 469 216 469 2 PYS -255 255 255 SC -455 473 56 20 0 360 AF -0 0 0 SC -454 474 55 19 0 360 AS -200 255 255 SC -455 473 56 20 0 360 AF -60 60 200 SC -454 474 55 19 0 360 AS -0 0 0 SC -(Fill TreeD) 37 436 470 DS -60 60 200 SC -false 316 469 399 469 2 PYS -0 0 0 SC -386 462 398 469 DL -386 476 398 469 DL -(Fill) 10 346 450 DS -255 255 255 SC -266 381 50 20 0 360 AF -0 0 0 SC -265 382 49 19 0 360 AS -200 255 255 SC -266 381 50 20 0 360 AF -60 60 200 SC -265 382 49 19 0 360 AS -0 0 0 SC -(make clusters) 55 238 378 DS -255 255 255 SC -266 317 50 20 0 360 AF -0 0 0 SC -265 318 49 19 0 360 AS -200 255 255 SC -266 317 50 20 0 360 AF -60 60 200 SC -265 318 49 19 0 360 AS -0 0 0 SC -(make sub tracks) 68 232 314 DS -255 255 255 SC -266 253 50 20 0 360 AF -0 0 0 SC -265 254 49 19 0 360 AS -255 200 255 SC -266 253 50 20 0 360 AF -200 60 60 SC -265 254 49 19 0 360 AS -0 0 0 SC -(make particles) 57 237 250 DS -255 255 255 SC -561 313 50 20 0 360 AF -0 0 0 SC -560 314 49 19 0 360 AS -255 200 255 SC -561 313 50 20 0 360 AF -200 60 60 SC -560 314 49 19 0 360 AS -0 0 0 SC -(Fill TreeR) 36 543 310 DS -255 255 255 SC -401 185 50 20 0 360 AF -0 0 0 SC -400 186 49 19 0 360 AS -255 200 255 SC -401 185 50 20 0 360 AF -200 60 60 SC -400 186 49 19 0 360 AS -0 0 0 SC -(parameters) 43 379 182 DS -255 255 255 SC -271 129 72 20 0 360 AF -0 0 0 SC -271 130 72 19 0 360 AS -255 200 255 SC -271 129 72 20 0 360 AF -200 60 60 SC -271 130 72 19 0 360 AS -0 0 0 SC -(leran from other subdetectors) 123 210 126 DS -200 60 60 SC -false 271 149 271 233 2 PYS -0 0 0 SC -278 220 271 232 DL -264 220 271 232 DL -(use) 14 279 180 DS -60 60 200 SC -106 433 218 385 DL -111 413 223 325 DL -200 60 60 SC -95 413 223 261 DL -255 255 255 SC -393 313 50 20 0 360 AF -0 0 0 SC -392 314 49 19 0 360 AS -200 255 255 SC -393 313 50 20 0 360 AF -60 60 200 SC -392 314 49 19 0 360 AS -0 0 0 SC -(reconstruction) 60 363 310 DS -60 60 200 SC -false 316 361 343 333 2 PYS -255 255 255 SC -false 342 334 328 338 338 348 3 PYF -0 0 0 SC -true 342 334 328 338 338 348 3 PYS -(<>) 57 307 350 DS -60 60 200 SC -false 316 317 343 317 2 PYS -255 255 255 SC -false 342 317 330 310 330 324 3 PYF -0 0 0 SC -true 342 317 330 310 330 324 3 PYS -(<>) 57 301 323 DS -200 60 60 SC -false 316 273 343 293 2 PYS -255 255 255 SC -false 342 292 336 280 328 291 3 PYF -0 0 0 SC -true 342 292 336 280 328 291 3 PYS -(<>) 57 295 286 DS -200 60 60 SC -false 443 309 511 309 2 PYS -0 0 0 SC -498 302 510 309 DL -498 316 510 309 DL -255 255 255 SC -633 425 50 20 0 360 AF -0 0 0 SC -632 426 49 19 0 360 AS -200 255 255 SC -633 425 50 20 0 360 AF -60 60 200 SC -632 426 49 19 0 360 AS -0 0 0 SC -(galice.root) 43 611 422 DS -60 60 200 SC -false 511 453 583 445 2 PYS -0 0 0 SC -570 439 582 446 DL -570 453 582 446 DL -60 60 200 SC -false 520 541 583 445 2 PYS -0 0 0 SC -569 453 582 446 DL -581 460 582 446 DL -60 60 200 SC -false 599 333 599 405 2 PYS -0 0 0 SC -606 392 599 404 DL -592 392 599 404 DL -200 60 60 SC -false 451 181 663 181 663 405 3 PYS -0 0 0 SC -670 392 663 404 DL -656 392 663 404 DL -200 60 60 SC -false 399 205 399 293 2 PYS -0 0 0 SC -406 280 399 292 DL -392 280 399 292 DL -(use) 14 407 254 DS -IC --29985 30597 60000 -60000 RC -% Font[TimesRoman, 0, 9] -314 9 4 SF -(use case general) 54 25 40 DS -% Font[TimesRoman, 0, 9] -314 9 4 SF -(Page 1) 23 737 40 DS -EP -%%Trailer -%%Pages: 1 -%%EOF diff --git a/PHOS/PHOS-UML/usecasereconstruction.gif b/PHOS/PHOS-UML/usecasereconstruction.gif deleted file mode 100644 index a5062ddcabb..00000000000 Binary files a/PHOS/PHOS-UML/usecasereconstruction.gif and /dev/null differ diff --git a/PHOS/PHOS-UML/usecasereconstruction.ps b/PHOS/PHOS-UML/usecasereconstruction.ps deleted file mode 100644 index b306510d05d..00000000000 --- a/PHOS/PHOS-UML/usecasereconstruction.ps +++ /dev/null @@ -1,334 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: use case reconstruction -%%Pages: (atend) -%%PageOrder: Ascend -%%DocumentFonts: Helvetica Helvetica-Bold -%%+Helvetica-Oblique Helvetica-BoldOblique -%%+Times-Roman Times-Bold Times-Italic Times-BoldItalic -%%+Courier Courier-Bold Courier-Oblique Courier-BoldOblique -%%EndComments -%%BeginProlog -/BD {bind def} bind def -/D {def} BD -/ISOF { - dup findfont dup length 1 add dict begin { - 1 index /FID eq {pop pop} {D} ifelse - } forall /Encoding ISOLatin1Encoding D - currentdict end definefont -} BD -/F [ - /Helvetica ISOF - /Helvetica-Bold ISOF - /Helvetica-Oblique ISOF - /Helvetica-BoldOblique ISOF - /Times-Roman ISOF - /Times-Bold ISOF - /Times-Italic ISOF - /Times-BoldItalic ISOF - /Courier ISOF - /Courier-Bold ISOF - /Courier-Oblique ISOF - /Courier-BoldOblique ISOF -] D -/R {4 2 roll moveto 1 index 0 rlineto - 0 exch rlineto neg 0 rlineto closepath} BD -/Adict 8 dict D -Adict /mtrx matrix put -/A { Adict begin - /endangle exch D /startangle exch D - /yrad exch D /xrad exch D - /y exch D /x exch D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale - 0 0 1 startangle endangle arc - savematrix setmatrix - end } BD -/PY { - dup 1 ge {3 1 roll moveto} if - -1 2 {pop lineto} for - {closepath} if -} BD -/CL { dup 0 exch -1 1 arct} BD -/RCL { dup 0 exch 1 1 arct} BD -/RRdict 8 dict D -RRdict /mtrx matrix put -/RR {RRdict begin - /yrad exch D /xrad exch D - /height exch D /width exch D - /y exch D /x exch D - /width width xrad div D /height height yrad div D - /savematrix mtrx currentmatrix D - x y translate xrad yrad scale -90 rotate - 1 0 moveto width RCL width 0 translate -90 rotate - height CL height 0 translate -90 rotate - width RCL width 0 translate -90 rotate height CL closepath - savematrix setmatrix - end } BD -/SC {3 {255 div 3 1 roll} repeat setrgbcolor} BD -/SF { - F exch get exch scalefont setfont - (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890) stringwidth pop div - currentfont exch scalefont setfont} BD -/RC {R clip newpath} BD -/IC {initclip} BD -/RF {R fill} BD -/RS {R stroke} BD -/RRF {RR fill} BD -/RRS {RR stroke} BD -/AS {A stroke} BD -/AF {6 -2 roll 2 copy moveto 6 2 roll A fill} BD -/PYS {PY stroke} BD -/PYF {PY eofill} BD -/NZ {dup 1 lt {pop 1} if} BD -/DS { - moveto 1 index stringwidth pop NZ sub - 1 index length 1 sub NZ div 0 - 3 2 roll ashow} BD -/DL {moveto lineto stroke} BD -/S {scale} BD -/SP {/P save D} BD -/EP {showpage P restore} BD -/GS {gsave} BD -/GR {grestore} BD -/CM { - /cmapr 256 array D - /cmapg 256 array D - /cmapb 256 array D - /cmapgray null D - 3 string exch 0 exch 1 exch 1 sub { - currentfile 2 index readhexstring pop - cmapr 2 index 2 index 0 get put - cmapg 2 index 2 index 1 get put - cmapb 2 index 2 index 2 get put - pop pop } for pop -} BD -/DII { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw string D - /colorimage where { - pop - /cimgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - 2 copy get - cmapr 1 index get - cimgstr exch 3 index - 3 mul exch put - cmapg 1 index get - cimgstr exch 3 index - 3 mul 1 add exch put - cmapb 1 index get - cimgstr exch 3 index - 3 mul 2 add exch put - pop pop } for pop cimgstr - } false 3 colorimage - } { - cmapgray null eq { - /cmapgray cmapr length array D - 0 1 cmapr length 1 sub { - cmapgray exch - cmapr 1 index get .299 mul - cmapg 2 index get .587 mul - cmapb 3 index get .114 mul - add add cvi put - } for - } if - imgw imgh 8 [imgw 0 0 imgh neg 0 0] { - currentfile imgstr readhexstring pop - 0 1 imgw 1 sub { - imgstr exch 2 copy get - cmapgray exch get put - } for - } image - } ifelse - imgsave restore - GR -} BD -/DI { - GS - /imgsave save D - translate scale - /imgh exch D - /imgw exch D - /imgy exch neg D - /imgx exch neg D - /imgstr imgw 3 mul string D - imgw imgh 8 [imgw 0 0 imgh neg imgx imgy] { - currentfile imgstr readhexstring pop - } bind false 3 colorimage - imgsave restore - GR -} BD -%%EndProlog -%%BeginSetup -mark { -%%BeginFeature: ManualFeed false -1 dict dup /ManualFeed false put setpagedevice -%%EndFeature -} stopped { -%%BeginFeature: *ManualFeed false - statusdict /manualfeed false put -%%EndFeature -} if cleartomark mark { -%%BeginFeature: PageSize *Letter -3 dict begin - /PageSize [612 792] def - /ImagingBBox null def - /Policies 1 dict dup/PageSize 3 put def - currentdict end setpagedevice -%%EndFeature -} stopped { - cleartomark statusdict begin mark { -%%BeginFeature: *PageSize Letter - lettertray -%%EndFeature - } stopped end -} if cleartomark -% now make sure we got what we requested! -gsave initgraphics clippath pathbbox grestore -5 dict begin - 3 -1 roll /yoff exch def 3 -1 roll /xoff exch def - yoff sub /h exch def xoff sub /w exch def - w 576 lt h 756 lt or { - w 2 div xoff add h 2 div yoff add translate - w xoff 2 mul add 612 div - h yoff 2 mul add 792 div - 2 copy gt {exch} if pop dup scale - -306 -396 translate - } if -end - -%%EndSetup - -%%Page: 1 1 -SP -IC -15 777 582 -717 RC -128 128 128 SC -118 610 10 15 0 360 AF -117 611 9 14 0 360 AS -255 255 255 SC -118 610 10 15 0 360 AF -0 0 0 SC -117 611 9 14 0 360 AS -118 595 118 575 DL -108 585 128 585 DL -118 575 113 560 DL -118 575 123 560 DL -% Font[Dialog, 0, 9] -340 9 0 SF -(PHOS actor) 45 96 544 DS -255 255 255 SC -310 605 68 20 0 360 AF -0 0 0 SC -309 606 67 19 0 360 AS -200 255 255 SC -310 605 68 20 0 360 AF -60 60 200 SC -309 606 67 19 0 360 AS -0 0 0 SC -(Make clusters in PHOS/EMC) 114 253 602 DS -60 60 200 SC -false 142 609 242 609 2 PYS -255 255 255 SC -310 549 68 20 0 360 AF -0 0 0 SC -309 550 67 19 0 360 AS -200 255 255 SC -310 549 68 20 0 360 AF -60 60 200 SC -309 550 67 19 0 360 AS -0 0 0 SC -(Make clusters in PHOS/PPSD) 114 253 546 DS -60 60 200 SC -false 135 585 247 561 2 PYS -255 255 255 SC -292 661 50 20 0 360 AF -0 0 0 SC -291 662 49 19 0 360 AS -200 255 255 SC -292 661 50 20 0 360 AF -60 60 200 SC -291 662 49 19 0 360 AS -0 0 0 SC -(Get Digits from file) 78 253 658 DS -60 60 200 SC -false 142 625 231 641 242 641 3 PYS -255 255 255 SC -292 493 50 20 0 360 AF -0 0 0 SC -291 494 49 19 0 360 AS -200 255 255 SC -292 493 50 20 0 360 AF -60 60 200 SC -291 494 49 19 0 360 AS -0 0 0 SC -(Make sub tracks) 68 258 490 DS -60 60 200 SC -false 143 561 242 513 2 PYS -255 255 255 SC -305 429 55 20 0 360 AF -0 0 0 SC -304 430 54 19 0 360 AS -255 200 255 SC -305 429 55 20 0 360 AF -0 0 0 SC -304 430 54 19 0 360 AS -(Save sub tracks to file) 88 261 426 DS -200 60 60 SC -false 142 540 250 449 2 PYS -255 255 255 SC -336 357 86 20 0 360 AF -0 0 0 SC -335 358 85 19 0 360 AS -255 200 255 SC -336 357 86 20 0 360 AF -200 60 60 SC -335 358 85 19 0 360 AS -0 0 0 SC -(Save methods and parameters to file ) 150 261 354 DS -200 60 60 SC -false 142 540 250 377 2 PYS -255 255 255 SC -489 589 50 20 0 360 AF -0 0 0 SC -488 590 49 19 0 360 AS -200 255 255 SC -489 589 50 20 0 360 AF -60 60 200 SC -488 590 49 19 0 360 AS -0 0 0 SC -(Make clusters) 55 461 586 DS -60 60 200 SC -false 378 609 447 593 2 PYS -255 255 255 SC -false 446 594 432 590 435 604 3 PYF -0 0 0 SC -true 446 594 432 590 435 604 3 PYS -(<>) 57 386 606 DS -60 60 200 SC -false 375 553 455 577 2 PYS -255 255 255 SC -false 454 576 443 567 440 581 3 PYF -0 0 0 SC -true 454 576 443 567 440 581 3 PYS -(<>) 57 384 569 DS -IC --29985 30777 60000 -60000 RC -% Font[TimesRoman, 0, 9] -314 9 4 SF -(use case reconstruction) 78 25 40 DS -% Font[TimesRoman, 0, 9] -314 9 4 SF -(Page 1) 23 557 40 DS -EP -%%Trailer -%%Pages: 1 -%%EOF diff --git a/PHOS/PHOSHistos.cxx b/PHOS/PHOSHistos.cxx new file mode 100644 index 00000000000..a68eb20caab --- /dev/null +++ b/PHOS/PHOSHistos.cxx @@ -0,0 +1,198 @@ +/************************************************************************** + * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +//_________________________________________________________________________ +// Cheking PHOSHistos procedure of PHOS +//*-- Author : Gines MARTINEZ SUBATECH january 2000 +////////////////////////////////////////////////////////////////////////////// + +// --- ROOT system --- + +#include "TCanvas.h" +#include "TFile.h" +#include "TH1.h" +#include "TPad.h" +#include "TTree.h" + +// --- Standard library --- + +#include +#include + + +// --- AliRoot header files --- +#include "AliRun.h" +#include "TFile.h" +#include "AliPHOSGeometry.h" +#include "AliPHOSv0.h" +#include "AliPHOSDigit.h" +#include "AliPHOSRecPoint.h" +#include "AliPHOSEmcRecPoint.h" +#include "AliPHOSPpsdRecPoint.h" +#include "AliPHOSClusterizerv1.h" +#include "AliPHOSReconstructioner.h" +#include "AliPHOSTrackSegment.h" +#include "AliPHOSTrackSegmentMakerv1.h" +#include "PHOSHistos.h" + + +void PHOSHistos (Text_t* infile, Int_t nevent, Int_t Module) +{ +//========== Opening galice.root file + TFile * file = new TFile(infile); +//========== Get AliRun object from file + gAlice = (AliRun*) file->Get("gAlice");//=========== Gets the PHOS object and associated geometry from the file + AliPHOSv0 * PHOS = (AliPHOSv0 *)gAlice->GetDetector("PHOS"); + AliPHOSGeometry * Geom = AliPHOSGeometry::GetInstance(PHOS->GetGeometry()->GetName(),PHOS->GetGeometry()->GetTitle()); +//========== Creates the Clusterizer + AliPHOSClusterizerv1 clusterizer; + clusterizer.SetEmcEnergyThreshold(0.01) ; + clusterizer.SetEmcClusteringThreshold(0.1) ; + clusterizer.SetPpsdEnergyThreshold(0.00000005) ; + clusterizer.SetPpsdClusteringThreshold(0.0000005) ; + clusterizer.SetLocalMaxCut(0.03) ; + clusterizer.SetCalibrationParameters(0., 0.00000001) ; +//========== Creates the track segment maker + AliPHOSTrackSegmentMakerv1 tracksegmentmaker ; +//========== Creates the Reconstructioner + AliPHOSReconstructioner Reconstructioner(clusterizer,tracksegmentmaker); + + TH1F * hEmcDigit = new TH1F("hEmcDigit","hEmcDigit",1000,0.,10.); + TH1F * hVetoDigit = new TH1F("hVetoDigit","hVetoDigit",1000,0.,3.e-5); + TH1F * hConvertorDigit = new TH1F("hConvertorDigit","hConvertorDigit",1000,0.,3.e-5); + TH1F * hEmcCluster = new TH1F("hEmcCluster","hEmcCluster",100,0.,10.); + TH1F * hVetoCluster = new TH1F("hVetoCluster","hVetoCluster",1000,0.,3.e-5); + TH1F * hConvertorCluster = new TH1F("hConvertorCluster","hConvertorCluster",1000,0.,3.e-5); + AliPHOSDigit * digit ; + +//========== Loop on events + Int_t ievent; + for(ievent=0;ieventGetEvent(ievent); + //=========== Gets the Digit TTree + gAlice->TreeD()->GetEvent(0) ; + //=========== Gets the number of entries in the Digits array + // Int_t nId = PHOS->Digits()->GetEntries(); + TIter next(PHOS->Digits()) ; + Float_t Etot=0 ; + Int_t nVeto=0 ; + Int_t nConvertor=0 ; + while( ( digit = (AliPHOSDigit *)next() ) ) + { + Etot+=clusterizer.Calibrate(digit->GetAmp()) ; + Geom->AbsToRelNumbering(digit->GetId(), RelId) ; + + if (clusterizer.IsInEmc(digit)) + { hEmcDigit->Fill(clusterizer.Calibrate(digit->GetAmp())) ; } + else + { + if (RelId[1]==9) {nVeto++; hVetoDigit->Fill(clusterizer.Calibrate(digit->GetAmp()));} + if (RelId[1]==25){nConvertor++; hConvertorDigit->Fill(clusterizer.Calibrate(digit->GetAmp()));} + } + } + + // if (nVeto>1) printf("AnaPHOSv0.C> Number of Veto entries is %d \n",nVeto); + // if (nConvertor>1) printf("AnaPHOSv0.C> Number of Convertor entries is %d \n",nConvertor); + +// cout <<"TestRec> Found " << nId << " digits in PHOS with total energy " << Etot << endl ; +// + PHOS->Reconstruction(Reconstructioner); + // PHOS->EmcClusters()->Delete(); +// PHOS->PpsdClusters()->Delete(); +// +// //=========== Cluster in Module +// TClonesArray * EmcRP = PHOS->EmcClusters() ; +// Etot = 0.; +// Int_t TotalNumberOfClusters = 0 ; +// Int_t NumberOfClusters = 0 ; +// TIter nextemc(EmcRP) ; +// AliPHOSEmcRecPoint * emc ; +// while((emc = (AliPHOSEmcRecPoint *)nextemc())) +// { +// TotalNumberOfClusters++ ; +// if ( emc->GetPHOSMod() == Module ) +// { +// NumberOfClusters++ ; +// Energy = emc->GetTotalEnergy() ; +// hEmcCluster->Fill(Energy); +// Etot+=Energy ; +// } +// } +// cout << "TestRec> Found " << TotalNumberOfClusters << " EMC Clusters in PHOS" << endl ; +// cout << "TestRec> Found in Module " << Module << " " << NumberOfClusters << " EMC Clusters " << endl ; +// cout << "TestRec> Total energy " <PpsdClusters() ; +// Etot = 0.; +// Int_t TotalNumberOfClusters = 0 ; +// Int_t NumberOfClusters = 0 ; +// TIter nextPpsd(PpsdRP) ; +// AliPHOSPpsdRecPoint * Ppsd ; +// while((Ppsd = (AliPHOSPpsdRecPoint *)nextPpsd())) +// { +// TotalNumberOfClusters++ ; +// if ( Ppsd->GetPHOSMod() == Module ) +// { +// NumberOfClusters++ ; +// Energy = Ppsd->GetEnergy() ; +// hConvertorCluster->Fill(Energy) ; +// Etot+=Energy ; +// if (!Ppsd->GetUp()) Ppsd->Draw("P") ; +// } +// } +// cout << "TestRec> Found " << TotalNumberOfClusters << " Ppsd Down Clusters in PHOS" << endl ; +// cout << "TestRec> Found in Module " << Module << " " << NumberOfClusters << " Ppsd Down Clusters " << endl ; +// cout << "TestRec> Total energy " <PpsdClusters() ; +// Etot = 0.; +// Int_t TotalNumberOfClusters = 0 ; +// Int_t NumberOfClusters = 0 ; +// TIter nextPpsdUp(PpsdRP) ; +// while((Ppsd = (AliPHOSPpsdRecPoint *)nextPpsdUp())) +// { +// TotalNumberOfClusters++ ; +// if ( Ppsd->GetPHOSMod() == Module ) +// { +// NumberOfClusters++ ; +// Energy = Ppsd->GetEnergy() ; +// hVetoCluster->Fill(Energy); +// Etot+=Energy ; +// if (Ppsd->GetUp()) Ppsd->Draw("P") ; +// } +// } +// cout << "TestRec> Found " << TotalNumberOfClusters << " Ppsd Up Clusters in PHOS" << endl ; +// cout << "TestRec> Found in Module " << Module << " " << NumberOfClusters << " Ppsd Up Clusters " << endl ; +// cout << "TestRec> Total energy " <Draw(); + TCanvas * cConvertorDigit = new TCanvas("ConvertorDigit","ConvertorDigit"); + hConvertorDigit->Draw(); + TCanvas * cEmcDigit = new TCanvas("EmcDigit","EmcDigit"); + hEmcDigit->Draw(); + + +} + + diff --git a/PHOS/PHOSHistos.h b/PHOS/PHOSHistos.h new file mode 100644 index 00000000000..6ab942c5cd6 --- /dev/null +++ b/PHOS/PHOSHistos.h @@ -0,0 +1,24 @@ +#ifndef PHOSHISTOS_H +#define PHOSHISTOS_H +/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ + +//////////////////////////////////////////////// +// PHOSHistos function for PHOS // +// Version SUBATECH // +// Author G.Martinez, SUBATECH // +// january 2000: // +//////////////////////////////////////////////// + +// --- ROOT system --- + +// --- AliRoot header files --- + +// --- Standard library --- + + +void PHOSHistos(Text_t *,Int_t neventt, Int_t Module) ; + +////////////////////////////////////////////////////////////////////////////// + +#endif // PHOSHISTOS_H diff --git a/PHOS/PHOSLinkDef.h b/PHOS/PHOSLinkDef.h index cdd80376a39..a20e8390e32 100644 --- a/PHOS/PHOSLinkDef.h +++ b/PHOS/PHOSLinkDef.h @@ -19,4 +19,7 @@ #pragma link C++ class AliPHOSTrackSegment ; #pragma link C++ class AliPHOSTrackSegmentMaker ; #pragma link C++ class AliPHOSTrackSegmentMakerv1 ; +#pragma link C++ function ReconstructionTest(Text_t*,Int_t, Int_t); +#pragma link C++ function PHOSHistos(Text_t*,Int_t, Int_t); + #endif diff --git a/PHOS/ReconstructionTest.cxx b/PHOS/ReconstructionTest.cxx new file mode 100644 index 00000000000..35e71948fff --- /dev/null +++ b/PHOS/ReconstructionTest.cxx @@ -0,0 +1,276 @@ + +/************************************************************************** + * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +//_________________________________________________________________________ +// Cheking Reconstruction procedure of PHOS +//*-- Author : Gines MARTINEZ SUBATECH january 2000 +////////////////////////////////////////////////////////////////////////////// + +// --- ROOT system --- + +#include "TFile.h" +#include "TH1.h" +#include "TPad.h" +#include "TTree.h" +#include "TCanvas.h" +#include "TParticle.h" + +// --- Standard library --- + +#include +#include + + +// --- AliRoot header files --- +#include "AliRun.h" +#include "TFile.h" +#include "AliPHOSGeometry.h" +#include "AliPHOSv0.h" +#include "AliPHOSDigit.h" +#include "AliPHOSRecPoint.h" +#include "AliPHOSEmcRecPoint.h" +#include "AliPHOSPpsdRecPoint.h" +#include "AliPHOSClusterizerv1.h" +#include "AliPHOSReconstructioner.h" +#include "AliPHOSTrackSegment.h" +#include "AliPHOSTrackSegmentMakerv1.h" +#include "ReconstructionTest.h" + + +void ReconstructionTest(Text_t* infile,Int_t evt, Int_t Module) +{ + //========== Opening galice.root file + TFile * file = new TFile(infile); + //========== Get AliRun object from file + gAlice = (AliRun*) file->Get("gAlice"); + //=========== Gets the PHOS object and associated geometry from the file + AliPHOSv0 * PHOS = (AliPHOSv0 *)gAlice->GetDetector("PHOS"); + AliPHOSGeometry * Geom = AliPHOSGeometry::GetInstance(PHOS->GetGeometry()->GetName(),PHOS->GetGeometry()->GetTitle()); + //========== Creates the Clusterizer + AliPHOSClusterizerv1 clusterizer; + clusterizer.SetEmcEnergyThreshold(0.01) ; + clusterizer.SetEmcClusteringThreshold(0.1) ; + clusterizer.SetPpsdEnergyThreshold(0.0000001) ; + clusterizer.SetPpsdClusteringThreshold(0.0000002) ; + clusterizer.SetLocalMaxCut(0.03) ; + clusterizer.SetCalibrationParameters(0., 0.0000001) ; + //========== Creates the track segment maker + AliPHOSTrackSegmentMakerv1 tracksegmentmaker ; + //========== Creates the Reconstructioner + AliPHOSReconstructioner Reconstructioner(clusterizer,tracksegmentmaker); + //=========== Connects the various Tree's for evt + gAlice->GetEvent(evt); + //=========== Gets the Digit TTree + gAlice->TreeD()->GetEvent(0) ; + //=========== Gets the number of entries in the Digits array + Int_t nId = PHOS->Digits()->GetEntries(); + printf("ReconstructionTest> Number of entries in the Digit array is %d \n",nId); + //=========== Do the reconstruction + AliPHOSDigit * digit ; + TIter next(PHOS->Digits()) ; + Float_t Etot=0 ; + while( ( digit = (AliPHOSDigit *)next() ) ) + Etot+=clusterizer.Calibrate(digit->GetAmp()) ; + cout <<"ReconstructionTest> Found " << nId << " digits in PHOS with total energy " << Etot << endl ; + PHOS->Reconstruction(Reconstructioner); + //================Make checks=========================== + + //=========== Creating Canvas + TCanvas * ModuleCanvas = new TCanvas("Module","Events in a single PHOS Module", 650, 500) ; + ModuleCanvas->Draw() ; + + //=========== Creating 2d-histogram of the PHOS Module + // a little bit junkie but is used to test Geom functinalities + + Double_t tm, tM, pm, pM ; // min and Max theta and phi covered by Module 1 + + Geom->EmcModuleCoverage(1, tm, tM, pm, pM); + // convert angles into coordinates local to the EMC module of interest + + Int_t EmcModuleNumber ; + Double_t EmcModulexm, EmcModulezm ; // minimum local coordinate in a given EMCA module + Double_t EmcModulexM, EmcModulezM ; // maximum local coordinate in a given EMCA module + Geom->ImpactOnEmc(tm, pm, EmcModuleNumber, EmcModulezm, EmcModulexm) ; + Geom->ImpactOnEmc(tM, pM, EmcModuleNumber, EmcModulezM, EmcModulexM) ; + Int_t xdim = (Int_t)( ( EmcModulexM - EmcModulexm ) / Geom->GetCrystalSize(0) ) ; + Int_t zdim = (Int_t)( ( EmcModulezM - EmcModulezm ) / Geom->GetCrystalSize(2) ) ; + Float_t xmin = EmcModulexm - Geom->GetCrystalSize(0) ; + Float_t xMax = EmcModulexM + Geom->GetCrystalSize(0) ; + Float_t zmin = EmcModulezm - Geom->GetCrystalSize(2) ; + Float_t zMax = EmcModulezM + Geom->GetCrystalSize(2) ; + // histogram of reconstructed events + Text_t HistoName[80]; + sprintf(HistoName,"Event %d: Reconstructed particles in module %d", evt, Module) ; + TH2F * hModule = new TH2F("HistoReconstructed", HistoName, + xdim, xmin, xMax, zdim, zmin, zMax) ; + hModule->SetMaximum(2.0); + hModule->SetMinimum(0.0); + hModule->SetStats(kFALSE); + // histogram of generated particles + sprintf(HistoName,"Event %d: Incident particles in module %d", evt, Module) ; + TH2F * HistoParticle = new TH2F("HistoParticle", HistoName, + xdim, xmin, xMax, zdim, zmin, zMax) ; + HistoParticle->SetStats(kFALSE) ; + + //=========== Digits of Module + TIter next2(PHOS->Digits()) ; + Float_t Energy, y, z; + Int_t RelId[4]; Int_t NumberOfDigits = 0 ; + while((digit = (AliPHOSDigit *)next2())) + { + Geom->AbsToRelNumbering(digit->GetId(), RelId) ; + if (RelId[0] == Module) + { + NumberOfDigits++ ; + Energy = clusterizer.Calibrate(digit->GetAmp()) ; + Etot+=Energy ; + Geom->RelPosInModule(RelId,y,z) ; + if (Energy>0.01 ) + hModule->Fill(y,z,Energy) ; + } + } + cout <<"TestRec> Found in Module " << Module << " " << NumberOfDigits << " digits with total energy " << Etot << endl ; + hModule->Draw("col2") ; + + //=========== Cluster in Module + TClonesArray * EmcRP = PHOS->EmcClusters() ; + Etot = 0.; + Int_t TotalNumberOfClusters = 0 ; + Int_t NumberOfClusters = 0 ; + TIter nextemc(EmcRP) ; + AliPHOSEmcRecPoint * emc ; + while((emc = (AliPHOSEmcRecPoint *)nextemc())) + { + TotalNumberOfClusters++ ; + if ( emc->GetPHOSMod() == Module ) + { + NumberOfClusters++ ; + Energy = emc->GetTotalEnergy() ; + Etot+=Energy ; + emc->Draw("P") ; + } + } + cout << "TestRec> Found " << TotalNumberOfClusters << " EMC Clusters in PHOS" << endl ; + cout << "TestRec> Found in Module " << Module << " " << NumberOfClusters << " EMC Clusters " << endl ; + cout << "TestRec> Total energy " <AddText(text) ; + PaveText->Draw() ; + ModuleCanvas->Update(); + + //=========== Cluster in Module PPSD Down + TClonesArray * PpsdRP = PHOS->PpsdClusters() ; + Etot = 0.; + TIter nextPpsd(PpsdRP) ; + AliPHOSPpsdRecPoint * Ppsd ; + while((Ppsd = (AliPHOSPpsdRecPoint *)nextPpsd())) + { + TotalNumberOfClusters++ ; + if ( Ppsd->GetPHOSMod() == Module ) + { + NumberOfClusters++ ; + Energy = Ppsd->GetEnergy() ; + Etot+=Energy ; + if (!Ppsd->GetUp()) Ppsd->Draw("P") ; + } + } + cout << "TestRec> Found " << TotalNumberOfClusters << " Ppsd Down Clusters in PHOS" << endl ; + cout << "TestRec> Found in Module " << Module << " " << NumberOfClusters << " Ppsd Down Clusters " << endl ; + cout << "TestRec> Total energy " <PpsdClusters() ; + Etot = 0.; + TIter nextPpsdUp(PpsdRP) ; + while((Ppsd = (AliPHOSPpsdRecPoint *)nextPpsdUp())) + { + TotalNumberOfClusters++ ; + if ( Ppsd->GetPHOSMod() == Module ) + { + NumberOfClusters++ ; + Energy = Ppsd->GetEnergy() ; + Etot+=Energy ; + if (Ppsd->GetUp()) Ppsd->Draw("P") ; + } + } + cout << "TestRec> Found " << TotalNumberOfClusters << " Ppsd Up Clusters in PHOS" << endl ; + cout << "TestRec> Found in Module " << Module << " " << NumberOfClusters << " Ppsd Up Clusters " << endl ; + cout << "TestRec> Total energy " <Particles(); + TCanvas * KineCanvas = new TCanvas("KineCnvas", "Incident particles", 650, 500) ; + // get the KINE Tree + TTree * Kine = gAlice->TreeK() ; + Stat_t NumberOfParticles = Kine->GetEntries() ; + cout << "events in Kine " << NumberOfParticles << endl ; + + // loop over particles + Int_t index1 ; + Int_t nparticlein = 0 ; + for (index1 = 0 ; index1 < NumberOfParticles ; index1++){ + Int_t nparticle = ArrayOfParticles->GetEntriesFast() ; + cout << nparticle << endl ; + Int_t index2 ; + for( index2 = 0 ; index2 < nparticle; index2++) { + Particle = (TParticle*)ArrayOfParticles->UncheckedAt(index2) ; + Int_t ParticleType = Particle->GetPdgCode() ; + Double_t Phi = Particle->Phi() ; + Double_t Theta = Particle->Theta() ; + Int_t mod ; + Double_t x, z ; + Geom->ImpactOnEmc(Theta, Phi, mod, z, x) ; + if ( mod == Module ) { + nparticlein++ ; + HistoParticle->Fill( x, -z, Particle->Energy() ) ; //-z don't know why, but that is how it works + } + } + } + KineCanvas->Draw() ; + HistoParticle->Draw("color") ; + TPaveText * PaveText2 = new TPaveText(22, 80, 83, 90); + sprintf(text, "Particles: %d ", nparticlein) ; + PaveText2->AddText(text) ; + PaveText2->Draw() ; + KineCanvas->Update(); + +// TObjArray * trsegl = PHOS->TrackSegments() ; +// AliPHOSTrackSegment trseg ; + +// Int_t NTrackSegments = trsegl->GetEntries() ; +// Int_t index ; +// Etot = 0 ; +// for(index = 0; index < NTrackSegments ; index++){ +// trseg = (AliPHOSTrackSegment * )trsegl->At(index) ; +// Etot+= trseg->GetEnergy() ; +// if ( trseg->GetPHOSMod() == Module ) +// { +// // trseg->Draw("P"); +// trseg->Print() ; +// } +// } +// cout << "Found " << trsegl->GetEntries() << " Track segments with total energy "<< Etot << endl ; +// + + + +} + + diff --git a/PHOS/ReconstructionTest.h b/PHOS/ReconstructionTest.h new file mode 100644 index 00000000000..f8c89140b63 --- /dev/null +++ b/PHOS/ReconstructionTest.h @@ -0,0 +1,24 @@ +#ifndef RECONSTRUCTIONTEST_H +#define RECONSTRUCTIONTEST_H +/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ + +//////////////////////////////////////////////// +// ReconstructionTest function for PHOS // +// Version SUBATECH // +// Author G.Martinez, SUBATECH // +// january 2000: // +//////////////////////////////////////////////// + +// --- ROOT system --- + +// --- AliRoot header files --- + +// --- Standard library --- + + +void ReconstructionTest(Text_t *,Int_t evt, Int_t Module) ; + +////////////////////////////////////////////////////////////////////////////// + +#endif // RECONSTRUCTIONTEST_H diff --git a/PHOS/testTrackSegment.C b/PHOS/testTrackSegment.C index 142cca84dd2..67f7a72340c 100644 --- a/PHOS/testTrackSegment.C +++ b/PHOS/testTrackSegment.C @@ -29,7 +29,7 @@ void testTrackSegment (Int_t evt = 0) //========== Creates the track segment maker - AliPHOSTrackSegmentMakererv1 tracksegmentmaker ; + AliPHOSTrackSegmentMakerv1 tracksegmentmaker ; //========== Creates the Reconstructioner AliPHOSReconstructioner Reconstructioner(clusterizer,tracksegmentmaker);