X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PHOS%2FAliPHOS.cxx;h=384fe9eb800f98e476b4998d559e104c50e62a92;hb=349db5e753204c5a23bed574647a89eb383b02db;hp=6999a967027faed1600c026acdf43a85a4baa6ad;hpb=d43225ee58df0b8d14f4589dac727be8a6df4c7b;p=u%2Fmrichter%2FAliRoot.git diff --git a/PHOS/AliPHOS.cxx b/PHOS/AliPHOS.cxx index 6999a967027..384fe9eb800 100644 --- a/PHOS/AliPHOS.cxx +++ b/PHOS/AliPHOS.cxx @@ -12,7 +12,6 @@ * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ - /* $Id$ */ //_________________________________________________________________________ @@ -25,58 +24,49 @@ //*-- 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. - fEmcRecPoints = 0 ; - fPpsdRecPoints = 0 ; - fTrackSegments = 0 ; - fRecParticles = 0 ; - + // Create folder and task hierarchy + 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 - - fEmcRecPoints = new AliPHOSRecPoint::RecPointsList(10) ; - fPpsdRecPoints = new AliPHOSRecPoint::RecPointsList(10) ; - fTrackSegments = new AliPHOSTrackSegment::TrackSegmentsList("AliPHOSTrackSegment", 10) ; - fRecParticles = new AliPHOSRecParticle::RecParticlesList("AliPHOSRecParticle", 10) ; - + fQATask = 0; + fTreeQA = 0; } + + //____________________________________________________________________________ -AliPHOS::~AliPHOS() -{ - // dtor - if(fEmcRecPoints) - fEmcRecPoints->Delete() ; - delete fEmcRecPoints ; - if(fPpsdRecPoints) - fPpsdRecPoints->Delete() ; - delete fPpsdRecPoints ; - if(fTrackSegments) - fTrackSegments->Delete() ; - delete fTrackSegments ; - if(fRecParticles) - fRecParticles->Delete() ; - delete fRecParticles ; - delete fHits ; - delete fDigits ; +AliPHOS::~AliPHOS() +{ + // remove the alice folder and alice QA task that PHOS creates instead of AliRun + + delete fTreeQA ; } //____________________________________________________________________________ @@ -139,7 +129,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) ; @@ -219,6 +209,30 @@ void AliPHOS::CreateMaterials() AliMixture(16, "ArCO2$", aGM, zGM, dGM, 2, wGM) ; + // --- 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) ; @@ -295,6 +309,18 @@ void AliPHOS::CreateMaterials() AliMedium(16, "ArCo2 $", 16, 1, isxfld, sxmgmx, 10.0, 0.1, 0.1, 0.1, 0.01, 0, 0) ; + // Stainless steel -> idtmed[716] + 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) ; @@ -332,30 +358,54 @@ void AliPHOS::CreateMaterials() gMC->Gstpar(idtmed[715], "DRAY",0.) ; gMC->Gstpar(idtmed[715], "STRA",2.) ; +} +//____________________________________________________________________________ +AliPHOSGeometry * AliPHOS::GetGeometry() const +{ + // gets the pointer to the AliPHOSGeometry unique instance + + return AliPHOSGeometry::GetInstance(GetTitle(),"") ; + } //____________________________________________________________________________ void AliPHOS::SetTreeAddress() { + + // TBranch *branch; - AliDetector::SetTreeAddress(); - - // //Branch address for TreeR: RecParticles -// TTree *treeR = gAlice->TreeR(); -// if ( treeR && fRecParticles ) { -// branch = treeR->GetBranch("PHOSRP"); -// if (branch) branch->SetAddress(&fRecParticles) ; -// } -// //Branch address for TreeR: TrackSegments -// if ( treeR && fTrackSegments ) { -// branch = treeR->GetBranch("PHOSTS"); -// if (branch) branch->SetAddress(&fTrackSegments) ; -// } -// //Branch address for TreeR: EmcRecPoint -// if ( treeR && fEmcRecPoints ) { -// branch = treeR->GetBranch("PHOSEmcRP"); -// if (branch) branch->SetAddress(&fEmcRecPoints) ; - // } + // AliDetector::SetTreeAddress(); + + TBranch *branch; + char branchname[20]; + sprintf(branchname,"%s",GetName()); + + // 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() ; +}