X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PHOS%2FAliPHOSv0.cxx;h=b7b491d1183656ddcc696f0053e53f689c2e2bd5;hb=95a38b7d7761c1c3bdb9741630eef4c0fbd480c3;hp=a6ef72fa3f96d088558ab75d9be0e56b407e8975;hpb=5ea56127508821292ee9402d0530de3d0b68b6e1;p=u%2Fmrichter%2FAliRoot.git
diff --git a/PHOS/AliPHOSv0.cxx b/PHOS/AliPHOSv0.cxx
index a6ef72fa3f9..b7b491d1183 100644
--- a/PHOS/AliPHOSv0.cxx
+++ b/PHOS/AliPHOSv0.cxx
@@ -12,616 +12,106 @@
* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-
/* $Id$ */
+/* History of cvs commits:
+ *
+ * $Log$
+ * Revision 1.94 2007/10/18 08:40:02 kharlov
+ * Misalignment-related bug fixed
+ *
+ * Revision 1.93 2007/10/06 22:24:40 kharlov
+ * Bug in strip unit geometry is corrected
+ *
+ * Revision 1.92 2007/07/04 16:38:19 policheh
+ * Tracking2LocalCS matrices corrected for CPV.
+ *
+ * Revision 1.91 2007/07/02 14:50:49 policheh
+ * Tracking2LocalCS matrices corrected.
+ *
+ * Revision 1.90 2007/05/24 13:04:05 policheh
+ * AddAlignableVolumes: local to tracking CS transformation matrices creates for each
+ * PHOS supermodule
+ *
+ * Revision 1.89 2007/04/24 14:34:39 hristov
+ * Additional protection: do not search for alignable object if the CPV is not in the geometry
+ *
+ * Revision 1.88 2007/04/19 15:28:30 kharlov
+ * Modify strip unit geometry according to the final drawings (Timur)
+ *
+ * Revision 1.87 2007/04/01 07:37:10 kharlov
+ * TGeo RS to Local RS transf matr added
+ *
+ * Revision 1.86 2007/03/06 06:55:46 kharlov
+ * DP:Misalignment of CPV added
+ *
+ * Revision 1.85 2007/03/01 11:37:37 kharlov
+ * Strip units changed from 8x1 to 8x2 (T.Pocheptsov)
+ *
+ * Revision 1.84 2006/12/20 16:56:43 kharlov
+ * Optional geometry without CPV
+ *
+ * Revision 1.83 2006/11/14 17:11:15 hristov
+ * Removing inheritances from TAttLine, TAttMarker and AliRndm in AliModule. The copy constructor and assignment operators are moved to the private part of the class and not implemented. The corresponding changes are propagated to the detectors
+ *
+ * Revision 1.82 2006/09/27 19:55:57 kharlov
+ * Alignment object with symbolic volume names are introduced
+ *
+ * Revision 1.81 2006/03/04 20:25:56 kharlov
+ * Set geom parameters from CDB
+ *
+ * Revision 1.80 2005/06/17 07:39:07 hristov
+ * Removing GetDebug and SetDebug from AliRun and AliModule. Using AliLog for the messages
+ *
+ * Revision 1.79 2005/05/28 14:19:05 schutz
+ * Compilation warnings fixed by T.P.
+ *
+ */
+
//_________________________________________________________________________
// Implementation version v0 of PHOS Manager class
-// Layout EMC + PPSD has name GPS2
+// An object of this class does not produce hits nor digits
+// It is the one to use if you do not want to produce outputs in TREEH or TREED
//
-//*-- Author: Yves Schutz (SUBATECH)
+//*-- Author: Yves Schutz (SUBATECH) & Dmitri Peressounko (RRC KI & SUBATECH)
// --- ROOT system ---
-#include "TBRIK.h"
-#include "TNode.h"
-#include "TRandom.h"
+#include
-
- PHOS in ALICE displayed by root
-
-
-
-
-
-
-
-
- */ - //END_HTML - - // Get pointer to the array containing media indexes - Int_t *idtmed = fIdtmed->GetArray() - 699 ; - - // The box containing all ppsd's for one PHOS module filled with air - Float_t ppsd[3] ; - ppsd[0] = fGeom->GetPPSDBoxSize(0) / 2.0 ; - ppsd[1] = fGeom->GetPPSDBoxSize(1) / 2.0 ; - ppsd[2] = fGeom->GetPPSDBoxSize(2) / 2.0 ; +
CPV perspective view | +CPV front view | +
+ | + |
One CPV module, perspective view | +One CPV module, front view (extended in vertical direction) | +
+ | + |
+ */
+ //END_HTML
+
+ Float_t par[5], x0,y0,z0 ;
+ Int_t i,j,copy;
- gMC->Gsvolu("LPPS", "BOX ", idtmed[709], lpppsd, 3) ;
-
- y0 = y0 - fGeom->GetPCThickness() / 2. - fGeom->GetCompositeThickness() / 2. ;
+ // Get pointer to the array containing media indexes
+ Int_t *idtmed = fIdtmed->GetArray() - 699 ;
- gMC->Gspos("LPPS", 1, "MPPS", 0.0, y0, 0.0, 0, "ONLY") ;
+ AliPHOSGeometry * geom = GetGeometry() ;
- // Position the fNumberOfModulesPhi x fNumberOfModulesZ modules (mppsd) inside PPSD to cover a PHOS module
- // the top and bottom one's (which are assumed identical) :
+ // --- Dummy box containing two rails on which PHOS support moves
+ // --- Put these rails to the bottom of the L3 magnet
- Float_t yt = ( fGeom->GetPPSDBoxSize(1) - fGeom->GetMicromegas1Thickness() ) / 2. ;
- Float_t yb = - ( fGeom->GetPPSDBoxSize(1) - fGeom->GetMicromegas2Thickness() ) / 2. ;
+ par[0] = geom->GetRailRoadSize(0) / 2.0 ;
+ par[1] = geom->GetRailRoadSize(1) / 2.0 ;
+ par[2] = geom->GetRailRoadSize(2) / 2.0 ;
+ gMC->Gsvolu("PRRD", "BOX ", idtmed[798], par, 3) ;
- Int_t copyNumbertop = 0 ;
- Int_t copyNumberbot = fGeom->GetNumberOfModulesPhi() * fGeom->GetNumberOfModulesZ() ;
+ y0 = -(geom->GetRailsDistanceFromIP() - geom->GetRailRoadSize(1) / 2.0) ;
+ gMC->Gspos("PRRD", 1, "ALIC", 0.0, y0, 0.0, 0, "ONLY") ;
- Float_t x = ( fGeom->GetPPSDBoxSize(0) - fGeom->GetPPSDModuleSize(0) ) / 2. ;
+ // --- Dummy box containing one rail
- for ( Int_t iphi = 1; iphi <= fGeom->GetNumberOfModulesPhi(); iphi++ ) { // the number of micromegas modules in phi per PHOS module
- Float_t z = ( fGeom->GetPPSDBoxSize(2) - fGeom->GetPPSDModuleSize(2) ) / 2. ;
+ par[0] = geom->GetRailOuterSize(0) / 2.0 ;
+ par[1] = geom->GetRailOuterSize(1) / 2.0 ;
+ par[2] = geom->GetRailOuterSize(2) / 2.0 ;
+ gMC->Gsvolu("PRAI", "BOX ", idtmed[798], par, 3) ;
- for ( Int_t iz = 1; iz <= fGeom->GetNumberOfModulesZ(); iz++ ) { // the number of micromegas modules in z per PHOS module
- gMC->Gspos("MPPS", ++copyNumbertop, "PPSD", x, yt, z, 0, "ONLY") ;
- gMC->Gspos("MPPS", ++copyNumberbot, "PPSD", x, yb, z, 0, "ONLY") ;
- z = z - fGeom->GetPPSDModuleSize(2) ;
- } // end of Z module loop
- x = x - fGeom->GetPPSDModuleSize(0) ;
- } // end of phi module loop
+ for (i=0; i<2; i++) {
+ x0 = (2*i-1) * geom->GetDistanceBetwRails() / 2.0 ;
+ gMC->Gspos("PRAI", i, "PRRD", x0, 0.0, 0.0, 0, "ONLY") ;
+ }
- // The Lead converter between two air gaps
- // 1. Upper air gap
+ // --- Upper and bottom steel parts of the rail
- Float_t uappsd[3] ;
- uappsd[0] = fGeom->GetPPSDBoxSize(0) / 2.0 ;
- uappsd[1] = fGeom->GetMicro1ToLeadGap() / 2.0 ;
- uappsd[2] = fGeom->GetPPSDBoxSize(2) / 2.0 ;
+ par[0] = geom->GetRailPart1(0) / 2.0 ;
+ par[1] = geom->GetRailPart1(1) / 2.0 ;
+ par[2] = geom->GetRailPart1(2) / 2.0 ;
+ gMC->Gsvolu("PRP1", "BOX ", idtmed[716], par, 3) ;
- gMC->Gsvolu("UAPPSD", "BOX ", idtmed[798], uappsd, 3) ;
+ y0 = - (geom->GetRailOuterSize(1) - geom->GetRailPart1(1)) / 2.0 ;
+ gMC->Gspos("PRP1", 1, "PRAI", 0.0, y0, 0.0, 0, "ONLY") ;
+ y0 = (geom->GetRailOuterSize(1) - geom->GetRailPart1(1)) / 2.0 - geom->GetRailPart3(1);
+ gMC->Gspos("PRP1", 2, "PRAI", 0.0, y0, 0.0, 0, "ONLY") ;
- y0 = ( fGeom->GetPPSDBoxSize(1) - 2 * fGeom->GetMicromegas1Thickness() - fGeom->GetMicro1ToLeadGap() ) / 2. ;
+ // --- The middle vertical steel parts of the rail
- gMC->Gspos("UAPPSD", 1, "PPSD", 0.0, y0, 0.0, 0, "ONLY") ;
+ par[0] = geom->GetRailPart2(0) / 2.0 ;
+ par[1] = geom->GetRailPart2(1) / 2.0 ;
+ par[2] = geom->GetRailPart2(2) / 2.0 ;
+ gMC->Gsvolu("PRP2", "BOX ", idtmed[716], par, 3) ;
- // 2. Lead converter
-
- Float_t lcppsd[3] ;
- lcppsd[0] = fGeom->GetPPSDBoxSize(0) / 2.0 ;
- lcppsd[1] = fGeom->GetLeadConverterThickness() / 2.0 ;
- lcppsd[2] = fGeom->GetPPSDBoxSize(2) / 2.0 ;
-
- gMC->Gsvolu("LCPPSD", "BOX ", idtmed[712], lcppsd, 3) ;
-
- y0 = y0 - fGeom->GetMicro1ToLeadGap() / 2. - fGeom->GetLeadConverterThickness() / 2. ;
+ y0 = - geom->GetRailPart3(1) / 2.0 ;
+ gMC->Gspos("PRP2", 1, "PRAI", 0.0, y0, 0.0, 0, "ONLY") ;
- gMC->Gspos("LCPPSD", 1, "PPSD", 0.0, y0, 0.0, 0, "ONLY") ;
+ // --- The most upper steel parts of the rail
- // 3. Lower air gap
+ par[0] = geom->GetRailPart3(0) / 2.0 ;
+ par[1] = geom->GetRailPart3(1) / 2.0 ;
+ par[2] = geom->GetRailPart3(2) / 2.0 ;
+ gMC->Gsvolu("PRP3", "BOX ", idtmed[716], par, 3) ;
- Float_t lappsd[3] ;
- lappsd[0] = fGeom->GetPPSDBoxSize(0) / 2.0 ;
- lappsd[1] = fGeom->GetLeadToMicro2Gap() / 2.0 ;
- lappsd[2] = fGeom->GetPPSDBoxSize(2) / 2.0 ;
+ y0 = (geom->GetRailOuterSize(1) - geom->GetRailPart3(1)) / 2.0 ;
+ gMC->Gspos("PRP3", 1, "PRAI", 0.0, y0, 0.0, 0, "ONLY") ;
- gMC->Gsvolu("LAPPSD", "BOX ", idtmed[798], lappsd, 3) ;
-
- y0 = y0 - fGeom->GetLeadConverterThickness() / 2. - fGeom->GetLeadToMicro2Gap() / 2. ;
-
- gMC->Gspos("LAPPSD", 1, "PPSD", 0.0, y0, 0.0, 0, "ONLY") ;
-
-}
+ // --- The wall of the cradle
+ // --- The wall is empty: steel thin walls and air inside
-//___________________________________________________________________________
-Int_t AliPHOSv0::Digitize(Float_t Energy)
-{
- // Applies the energy calibration
-
- Float_t fB = 100000000. ;
- Float_t fA = 0. ;
- Int_t chan = Int_t(fA + Energy*fB ) ;
- return chan ;
-}
+ par[1] = TMath::Sqrt(TMath::Power((geom->GetIPtoCPVDistance() + geom->GetOuterBoxSize(3)),2) +
+ TMath::Power((geom->GetOuterBoxSize(1)/2),2))+10. ;
+ par[0] = par[1] - geom->GetCradleWall(1) ;
+ par[2] = geom->GetCradleWall(2) / 2.0 ;
+ par[3] = geom->GetCradleWall(3) ;
+ par[4] = geom->GetCradleWall(4) ;
+ gMC->Gsvolu("PCRA", "TUBS", idtmed[716], par, 5) ;
-//___________________________________________________________________________
-void AliPHOSv0::FinishEvent()
-{
- // Makes the digits from the sum of summed hit in a single crystal or PPSD gas cell
- // Adds to the energy the electronic noise
- // Keeps digits with energy above fDigitThreshold
+ par[0] += geom->GetCradleWallThickness() ;
+ par[1] -= geom->GetCradleWallThickness() ;
+ par[2] -= geom->GetCradleWallThickness() ;
+ gMC->Gsvolu("PCRE", "TUBS", idtmed[798], par, 5) ;
+ gMC->Gspos ("PCRE", 1, "PCRA", 0.0, 0.0, 0.0, 0, "ONLY") ;
- // Save the cumulated hits instead of raw hits (need to create the branch myself)
- // It is put in the Digit Tree because the TreeH is filled after each primary
- // and the TreeD at the end of the event.
-
- if ( ! (gAlice->IsLegoRun()) ) { // only when not in lego plot mode
- if ( fTmpHits && gAlice->TreeD() ) {
- char branchname[10] ;
- sprintf(branchname, "%sCH", GetName()) ;
- gAlice->TreeD()->Branch(branchname, &fTmpHits, fBufferSize) ;
- } else
- cout << "AliPHOSv0::AliPHOSv0: Failed to create branch PHOSCH in TreeD " << endl ;
+ for (i=0; i<2; i++) {
+ z0 = (2*i-1) * (geom->GetOuterBoxSize(2) + geom->GetCradleWall(2) )/ 2.0 ;
+ gMC->Gspos("PCRA", i, "ALIC", 0.0, 0.0, z0, 0, "ONLY") ;
}
-
- Int_t i ;
- Int_t relid[4];
- Int_t j ;
- TClonesArray &lDigits = *fDigits ;
- AliPHOSHit * hit ;
- AliPHOSDigit * newdigit ;
- AliPHOSDigit * curdigit ;
- Bool_t deja = kFALSE ;
-
- for ( i = 0 ; i < fNTmpHits ; i++ ) {
- hit = (AliPHOSHit*)fTmpHits->At(i) ;
- newdigit = new AliPHOSDigit( hit->GetPrimary(), hit->GetId(), Digitize( hit->GetEnergy() ) ) ;
- deja =kFALSE ;
- for ( j = 0 ; j < fNdigits ; j++) {
- curdigit = (AliPHOSDigit*) lDigits[j] ;
- if ( *curdigit == *newdigit) {
- *curdigit = *curdigit + *newdigit ;
- deja = kTRUE ;
- }
- }
- if ( !deja ) {
- new(lDigits[fNdigits]) AliPHOSDigit(* newdigit) ;
- fNdigits++ ;
- }
-
- delete newdigit ;
- }
-
- // Noise induced by the PIN diode of the PbWO crystals
-
- Float_t energyandnoise ;
- for ( i = 0 ; i < fNdigits ; i++ ) {
- newdigit = (AliPHOSDigit * ) fDigits->At(i) ;
- fGeom->AbsToRelNumbering(newdigit->GetId(), relid) ;
- if (relid[1]==0){ // Digits belong to EMC (PbW0_4 crystals)
- energyandnoise = newdigit->GetAmp() + Digitize(gRandom->Gaus(0., fPinElectronicNoise)) ;
-
- if (energyandnoise < 0 )
- energyandnoise = 0 ;
-
- if ( newdigit->GetAmp() < fDigitThreshold ) // if threshold not surpassed, remove digit from list
- fDigits->RemoveAt(i) ;
+ // --- The "wheels" of the cradle
+
+ par[0] = geom->GetCradleWheel(0) / 2;
+ par[1] = geom->GetCradleWheel(1) / 2;
+ par[2] = geom->GetCradleWheel(2) / 2;
+ gMC->Gsvolu("PWHE", "BOX ", idtmed[716], par, 3) ;
+
+ y0 = -(geom->GetRailsDistanceFromIP() - geom->GetRailRoadSize(1) -
+ geom->GetCradleWheel(1)/2) ;
+ for (i=0; i<2; i++) {
+ z0 = (2*i-1) * ((geom->GetOuterBoxSize(2) + geom->GetCradleWheel(2))/ 2.0 +
+ geom->GetCradleWall(2));
+ for (j=0; j<2; j++) {
+ copy = 2*i + j;
+ x0 = (2*j-1) * geom->GetDistanceBetwRails() / 2.0 ;
+ gMC->Gspos("PWHE", copy, "ALIC", x0, y0, z0, 0, "ONLY") ;
}
}
-
- fDigits->Compress() ;
-
- fNdigits = fDigits->GetEntries() ;
- for (i = 0 ; i < fNdigits ; i++) {
- newdigit = (AliPHOSDigit *) fDigits->At(i) ;
- newdigit->SetIndexInList(i) ;
- }
}
-//____________________________________________________________________________
-void AliPHOSv0::Init(void)
+//_____________________________________________________________________________
+void AliPHOSv0::AddAlignableVolumes() const
{
- // Just prints an information message
-
- 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 AliPHOSv0::MakeBranch(Option_t* opt)
-{
- // Create new branche in the current Root Tree in the digit Tree
-
- AliDetector::MakeBranch(opt) ;
-
- char branchname[10];
- sprintf(branchname,"%s",GetName());
- char *cdD = strstr(opt,"D");
-
- if (fDigits && gAlice->TreeD() && cdD) {
- gAlice->TreeD()->Branch(branchname, &fDigits, fBufferSize);
+ //
+ // Create entries for alignable volumes associating the symbolic volume
+ // name with the corresponding volume path. Needs to be syncronized with
+ // eventual changes in the geometry
+ // Alignable volumes are:
+ // 1) PHOS modules as a whole
+ // 2) Cradle
+ // 3) Cradle wheels
+ // 4) Strip units (group of 2x8 crystals)
+
+ TString volpath, symname;
+
+ // Alignable modules
+ // Volume path /ALIC_1/PHOS_ => symbolic name /PHOS/Module, =1,2,3,4,5
+
+ AliGeomManager::ELayerID idPHOS1 = AliGeomManager::kPHOS1;
+ AliGeomManager::ELayerID idPHOS2 = AliGeomManager::kPHOS2;
+ Int_t modUID, modnum = 0;
+ TString physModulePath="/ALIC_1/PHOS_";
+ TString symbModuleName="PHOS/Module";
+ Int_t nModules = GetGeometry()->GetNModules();
+
+ char im[5] ;
+ for(Int_t iModule=1; iModule<=nModules; iModule++){
+ snprintf(im,5,"%d",iModule) ;
+ modUID = AliGeomManager::LayerToVolUID(idPHOS1,modnum++);
+ if(strstr(GetTitle(),im)==0 && strcmp(GetTitle(),"IHEP")!=0 && strcmp(GetTitle(),"noCPV")!=0)
+ continue ;
+ volpath = physModulePath;
+ volpath += iModule;
+ // volpath += "/PEMC_1/PCOL_1/PTIO_1/PCOR_1/PAGA_1/PTII_1";
+
+ // Check the volume path if not all 5 modules exist
+ if (!gGeoManager->CheckPath(volpath.Data())) {
+ AliError(Form("Volume path %s not valid!",volpath.Data()));
+ continue;
+ }
+
+ symname = symbModuleName;
+ symname += iModule;
+ if(!gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data(),modUID))
+ continue ;
+// AliFatal(Form("Alignable entry %s not created. Volume path %s not valid", symname.Data(),volpath.Data()));
+
+ // Creates the Tracking to Local transformation matrix for PHOS modules
+ TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(modUID) ;
+
+ Float_t angle = GetGeometry()->GetPHOSAngle(iModule);
+ TGeoHMatrix* globMatrix = alignableEntry->GetGlobalOrig();
+
+ TGeoHMatrix *matTtoL = new TGeoHMatrix;
+ matTtoL->RotateZ(-90.+angle);
+ matTtoL->MultiplyLeft(&(globMatrix->Inverse()));
+ alignableEntry->SetMatrix(matTtoL);
}
-}
-
-//____________________________________________________________________________
-RecPointsList * AliPHOSv0::PpsdRecPoints(Int_t evt)
-{
- // returns the pointer to the PPSD RecPoints list
- // if the list is empty, get it from TreeR on the disk file
-
- RecPointsList * rv = 0 ;
- if ( fPpsdRecPoints )
- rv = fPpsdRecPoints ;
+ //Aligning of CPV should be done for volume PCPV_1
+ symbModuleName="PHOS/Module";
+ modnum=0;
+ for(Int_t iModule=1; iModule<=nModules; iModule++){
+ if(strstr(GetTitle(),"noCPV"))
+ continue ;
+ snprintf(im,5,"%d",iModule) ;
+ modUID = AliGeomManager::LayerToVolUID(idPHOS2,modnum++);
+ if(strstr(GetTitle(),im)==0 && strcmp(GetTitle(),"IHEP")!=0)
+ continue ;
+ volpath = physModulePath;
+ volpath += iModule;
+ volpath += "/PCPV_1";
+ // Check the volume path
+ if (!gGeoManager->CheckPath(volpath.Data())) {
+ AliError(Form("Volume path %s not valid!",volpath.Data()));
+ continue;
+ }
- else {
- fPpsdRecPoints = new TClonesArray("AliPHOSPpsdRecPoint", 100) ;
- gAlice->GetEvent(evt) ;
- TTree * fReconstruct = gAlice->TreeR() ;
- fReconstruct->SetBranchAddress( "PHOSPpsdRP", &fPpsdRecPoints) ;
- fReconstruct->GetEvent(0) ;
- rv = fPpsdRecPoints ;
- }
-
- fPpsdRecPoints->Expand( fPpsdRecPoints->GetEntries() ) ;
+ symname = symbModuleName;
+ symname += iModule;
+ symname += "/CPV";
+ if(!gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data(),modUID))
+ AliFatal(Form("Alignable entry %s not created. Volume path %s not valid", symname.Data(),volpath.Data()));
+
+ // Creates the TGeo Local to Tracking transformation matrix ...
+ TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(modUID) ;
+
+ Float_t angle = GetGeometry()->GetPHOSAngle(iModule);
+ TGeoHMatrix* globMatrix = alignableEntry->GetGlobalOrig();
+
+ TGeoHMatrix *matTtoL = new TGeoHMatrix;
+ matTtoL->RotateZ(-90.+angle);
+ matTtoL->MultiplyLeft(&(globMatrix->Inverse()));
+ alignableEntry->SetMatrix(matTtoL);
- return rv ;
-
-}
-
-//_____________________________________________________________________________
-void AliPHOSv0::Reconstruction(AliPHOSReconstructioner * Reconstructioner)
-{
- // 1. Reinitializes the existing RecPoint, TrackSegment, and RecParticles Lists and
- // 2. Creates TreeR wit a branch for each list
- // 3. Steers the reconstruction processes
- // 4. Saves the 3 lists in TreeR
- // 5. Write the Tree to File
-
- fReconstructioner = Reconstructioner ;
-
- char branchname[10] ;
-
- // 1.
-
- gAlice->MakeTree("R") ;
- Int_t splitlevel = 0 ;
-
- if (fEmcRecPoints) {
- fEmcRecPoints->Delete() ;
- delete fEmcRecPoints ;
- fEmcRecPoints = 0 ;
}
+
- // fEmcRecPoints= new RecPointsList("AliPHOSEmcRecPoint", 100) ; if TClonesArray
- fEmcRecPoints= new RecPointsList(100) ;
+ // Alignable cradle walls
+ // Volume path /ALIC_1/PCRA_ => symbolic name /PHOS/Cradle, =0,1
- if ( fEmcRecPoints && gAlice->TreeR() ) {
- sprintf(branchname,"%sEmcRP",GetName()) ;
-
- // gAlice->TreeR()->Branch(branchname, &fEmcRecPoints, fBufferSize); if TClonesArray
- gAlice->TreeR()->Branch(branchname, "TObjArray", &fEmcRecPoints, fBufferSize, splitlevel) ;
- }
+ TString physCradlePath="/ALIC_1/PCRA_";
+ TString symbCradleName="PHOS/Cradle";
+ Int_t nCradles = 2;
- if (fPpsdRecPoints) {
- fPpsdRecPoints->Delete() ;
- delete fPpsdRecPoints ;
- fPpsdRecPoints = 0 ;
+ for(Int_t iCradle=0; iCradle