X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PHOS%2FAliPHOS.cxx;h=2b1230cb2f755081f9fe5aef9d92a19b31c0b266;hb=0c24ba98f9a6562f146d17265361f1a01a5ea865;hp=3f377132c550a86be59ff8c07fd1c1d815c20cd1;hpb=b73f246d92ad05600f8f4134e117aacee0c00850;p=u%2Fmrichter%2FAliRoot.git diff --git a/PHOS/AliPHOS.cxx b/PHOS/AliPHOS.cxx index 3f377132c55..2b1230cb2f7 100644 --- a/PHOS/AliPHOS.cxx +++ b/PHOS/AliPHOS.cxx @@ -1,4 +1,3 @@ - /************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * @@ -13,7 +12,6 @@ * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ - /* $Id$ */ //_________________________________________________________________________ @@ -26,67 +24,47 @@ //*-- Author: Laurent Aphecetche & Yves Schutz (SUBATECH) ////////////////////////////////////////////////////////////////////////////// + // --- ROOT system --- +class TFile; +#include "TROOT.h" #include "TTree.h" +#include "TFolder.h" // --- Standard library --- +#include // --- AliRoot header files --- - #include "AliPHOS.h" #include "AliMC.h" #include "AliRun.h" #include "AliMagF.h" +#include "AliPHOSGeometry.h" +#include "AliPHOSQAChecker.h" ClassImp(AliPHOS) - //____________________________________________________________________________ -AliPHOS::AliPHOS():AliDetector() +AliPHOS:: AliPHOS() : AliDetector() { - // ctor - //We do not create objects, because these pointers will be overwritten durin reading from file. - fDigits = 0 ; - fEmcRecPoints = 0 ; - fPpsdRecPoints = 0 ; - fCpvRecPoints = 0 ; - fTrackSegments = 0 ; - fRecParticles = 0 ; - + // Default ctor + fName="PHOS"; + fQATask = 0; + fTreeQA = 0; } + //____________________________________________________________________________ -AliPHOS::AliPHOS(const char* name, const char* title): AliDetector(name,title) +AliPHOS::AliPHOS(const char* name, const char* title): AliDetector(name, title) { - // ctor - - fDigits = 0 ; - fEmcRecPoints = 0 ; - fPpsdRecPoints = 0 ; - fCpvRecPoints = 0 ; - fTrackSegments = 0 ; - fRecParticles = 0 ; + // ctor : title is used to identify the layout + fQATask = 0; + fTreeQA = 0; } + //____________________________________________________________________________ -AliPHOS::~AliPHOS() -{ - // dtor - if(fEmcRecPoints) - fEmcRecPoints->Delete() ; - delete fEmcRecPoints ; - if(fPpsdRecPoints) - fPpsdRecPoints->Delete() ; - delete fPpsdRecPoints ; - if(fCpvRecPoints) - fCpvRecPoints->Delete() ; - delete fCpvRecPoints ; - if(fTrackSegments) - fTrackSegments->Delete() ; - delete fTrackSegments ; - if(fRecParticles) - fRecParticles->Delete() ; - delete fRecParticles ; - delete fHits ; - delete fDigits ; +AliPHOS::~AliPHOS() +{ + } //____________________________________________________________________________ @@ -149,7 +127,7 @@ void AliPHOS::CreateMaterials() 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 ; + Float_t dTI = 0.04 ; AliMixture(7, "Thermo Insul.$", aTI, zTI, dTI, -2, wTI) ; @@ -231,6 +209,28 @@ void AliPHOS::CreateMaterials() // --- Stainless steel (let it be pure iron) --- AliMaterial(17, "Steel$", 55.845, 26, 7.87, 1.76, 0., 0, 0) ; + + + // --- Fiberglass --- + Float_t aFG[4] = {16.0, 28.09, 12.011, 1.00794} ; + Float_t zFG[4] = {8.0, 14.0, 6.0, 1.0} ; + Float_t wFG[4] = {292.0, 68.0, 462.0, 736.0} ; + Float_t dFG = 1.9 ; + + AliMixture(18, "Fibergla$", aFG, zFG, dFG, -4, wFG) ; + + // --- Cables in Air box --- + // SERVICES + + Float_t aCA[4] = { 1.,12.,55.8,63.5 }; + Float_t zCA[4] = { 1.,6.,26.,29. }; + Float_t wCA[4] = { .014,.086,.42,.48 }; + Float_t dCA = 0.8 ; //this density is raw estimation, if you know better - correct + + AliMixture(19, "Cables $", aCA, zCA, dCA, -4, wCA) ; + + + // --- Air --- AliMaterial(99, "Air$", 14.61, 7.3, 0.001205, 30420., 67500., 0, 0) ; @@ -311,6 +311,14 @@ void AliPHOS::CreateMaterials() AliMedium(17, "Steel $", 17, 0, isxfld, sxmgmx, 10.0, 0.1, 0.1, 0.1, 0.0001, 0, 0) ; + // Fibergalss -> idtmed[717] + AliMedium(18, "Fiberglass$", 18, 0, + isxfld, sxmgmx, 10.0, 0.1, 0.1, 0.1, 0.1, 0, 0) ; + + // Cables in air -> idtmed[718] + AliMedium(19, "Cables $", 19, 0, + isxfld, sxmgmx, 10.0, 0.1, 0.1, 0.1, 0.1, 0, 0) ; + // Air -> idtmed[798] AliMedium(99, "Air $", 99, 0, isxfld, sxmgmx, 10.0, 1.0, 0.1, 0.1, 10.0, 0, 0) ; @@ -349,82 +357,50 @@ void AliPHOS::CreateMaterials() gMC->Gstpar(idtmed[715], "STRA",2.) ; } -//____________________________________________________________________________ -void AliPHOS::SetTreeAddress() -{ - // TBranch *branch; - AliDetector::SetTreeAddress(); - - TBranch * branch ; - - if(fDigits) - fDigits->Clear(); - else - fDigits = new TClonesArray("AliPHOSDigit",1) ; - - if (gAlice->TreeD() && fDigits ) { - branch = gAlice->TreeD()->GetBranch("PHOS"); - if (branch) branch->SetAddress(&fDigits) ; - } - TTree *treeR = gAlice->TreeR(); - - //Branch address for TreeR: EmcRecPoint +//____________________________________________________________________________ +AliPHOSGeometry * AliPHOS::GetGeometry() const +{ + // gets the pointer to the AliPHOSGeometry unique instance - if(fEmcRecPoints) - fEmcRecPoints->Delete(); - else - fEmcRecPoints = new AliPHOSRecPoint::RecPointsList(1) ; - - if ( treeR && fEmcRecPoints ) { - branch = treeR->GetBranch("PHOSEmcRP"); - if (branch) branch->SetAddress(&fEmcRecPoints) ; - } - - //Branch address for TreeR: PPSDRecPoint - if(fPpsdRecPoints) - fPpsdRecPoints->Delete(); - else - fPpsdRecPoints = new AliPHOSRecPoint::RecPointsList(1) ; + return AliPHOSGeometry::GetInstance(GetTitle(),"") ; - if ( treeR && fPpsdRecPoints ) { - branch = treeR->GetBranch("PHOSPpsdRP"); - if (branch) branch->SetAddress(&fPpsdRecPoints) ; - } - - //Branch address for TreeR: CPVRecPoint - if(fCpvRecPoints) - fCpvRecPoints->Delete(); - else - fCpvRecPoints = new AliPHOSRecPoint::RecPointsList(1) ; +} - if ( treeR && fCpvRecPoints ) { - branch = treeR->GetBranch("PHOSCpvRP"); - if (branch) branch->SetAddress(&fCpvRecPoints) ; - } +//____________________________________________________________________________ +void AliPHOS::SetTreeAddress() +{ - //Branch address for TreeR: TrackSegments - if(fTrackSegments) - fTrackSegments->Clear() ; - else - fTrackSegments = new AliPHOSTrackSegment::TrackSegmentsList("AliPHOSTrackSegment", 1) ; - - if ( treeR && fTrackSegments ) { - branch = treeR->GetBranch("PHOSTS"); - if (branch) branch->SetAddress(&fTrackSegments) ; - } + TBranch *branch; + char branchname[20]; + sprintf(branchname,"%s",GetName()); - //Branch address for TreeR: RecParticles - if(fRecParticles) - fRecParticles->Clear() ; - else - fRecParticles = new AliPHOSRecParticle::RecParticlesList("AliPHOSRecParticle", 1) ; - - if ( treeR && fRecParticles ) { - branch = treeR->GetBranch("PHOSRP"); - if (branch) branch->SetAddress(&fRecParticles) ; + // Branch address for hit tree + TTree *treeH = gAlice->TreeH(); + if (treeH && fHits) { + branch = treeH->GetBranch(branchname); + if (branch) branch->SetAddress(&fHits); } - } +//____________________________________________________________________________ +void AliPHOS::WriteQA() +{ + + // Make TreeQA in the output file. + + if(fTreeQA == 0) + fTreeQA = new TTree("TreeQA", "QA Alarms") ; + // Create Alarms branches + Int_t bufferSize = 32000 ; + Int_t splitlevel = 0 ; + TFolder * alarmsF = (TFolder*)gROOT->FindObjectAny("Folders/Run/Conditions/QA/PHOS") ; + TString branchName(alarmsF->GetName()); + TBranch * alarmsBranch = fTreeQA->Branch(branchName,"TFolder", &alarmsF, bufferSize, splitlevel); + TString branchTitle = branchName + " QA alarms" ; + alarmsBranch->SetTitle(branchTitle); + alarmsBranch->Fill() ; + + //fTreeQA->Fill() ; +}