* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-Revision 1.14 2001/03/12 17:46:22 hristov
-Changes needed on Sun with CC 5.0
-
-Revision 1.13 2001/01/26 20:02:43 hristov
-Major upgrade of AliRoot code
-
-Revision 1.12 2000/12/04 08:48:18 alibrary
-Fixing problems in the HEAD
-
-Revision 1.11 2000/11/17 10:15:24 morsch
-Call to AliDetector::ResetHits() added to method AliPMD::ResetHits()
-
-Revision 1.10 2000/11/06 09:07:13 morsch
-Set fRecPoints to zero in default constructor.
-
-Revision 1.9 2000/10/30 09:03:59 morsch
-Prototype for PMD reconstructed hits (AliPMDRecPoint) added.
-
-Revision 1.8 2000/10/20 06:24:40 fca
-Put the PMD at the right position in the event display
-
-Revision 1.7 2000/10/02 21:28:12 fca
-Removal of useless dependecies via forward declarations
-
-Revision 1.6 2000/01/19 17:17:06 fca
-Introducing a list of lists of hits -- more hits allowed for detector now
-
-Revision 1.5 1999/09/29 09:24:27 fca
-Introduction of the Copyright and cvs Log
-
-*/
+/* $Id$ */
///////////////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////////////
#include <TBRIK.h>
-#include <TNode.h>
-#include <TTree.h>
-#include <TGeometry.h>
#include <TClonesArray.h>
#include <TFile.h>
+#include <TGeometry.h>
+#include <TNode.h>
+#include <TTree.h>
+#include <TVirtualMC.h>
-#include "AliPMD.h"
-#include "AliRun.h"
-#include "AliMC.h"
#include "AliConst.h"
+#include "AliLoader.h"
+#include "AliPMD.h"
#include "AliPMDRecPoint.h"
+#include "AliRun.h"
+#include "AliMC.h"
+#include "AliPMDDigitizer.h"
ClassImp(AliPMD)
//
fIshunt = 0;
- // Always make the TClonesArray, otherwise the automatic streamer gets angry
- fRecPoints = new TClonesArray("AliPMDRecPoint",10000);
+ fRecPoints = 0;
}
//
// Allocate the array of hits
fHits = new TClonesArray("AliPMDhit", 405);
- gAlice->AddHitList(fHits);
+ gAlice->GetMCApp()->AddHitList(fHits);
fRecPoints = new TClonesArray("AliPMDRecPoint",10000);
fNRecPoints = 0;
- fIshunt = 1;
+ fIshunt = 0;
fPar[0] = 1;
fPar[1] = 1;
fPadSize[3] = 1.5;
}
+AliLoader* AliPMD::MakeLoader(const char* topfoldername)
+{
+ cout<<"AliPMD::MakeLoader ";
+
+ fLoader = new AliPMDLoader(GetName(),topfoldername);
+
+ if (fLoader)
+ {
+ cout<<"Success"<<endl;
+ }
+ else
+ {
+ cout<<"Failure"<<endl;
+ }
+
+ return fLoader;
+}
+
AliPMD::~AliPMD()
{
//
//
TClonesArray &lhits = *fHits;
AliPMDhit *newcell, *curcell;
-// printf("PMD++ Adding energy %f, prim %d, vol %d %d %d %d\n",
-// hits[3],gAlice->GetPrimary(track-1),vol[0],vol[1],vol[2],vol[3]);
+ // printf("PMD++ Adding energy %f, prim %d, vol %d %d %d %d %d %d %d %d\n",
+ // hits[3],gAlice->GetPrimary(track-1),vol[0],vol[1],vol[2],vol[3],
+ // vol[4],vol[5],vol[6],vol[7]);
+
newcell = new AliPMDhit(fIshunt, track, vol, hits);
Int_t i;
for (i=0; i<fNhits; i++) {
new(lrecpoints[fNRecPoints++]) AliPMDRecPoint(p);
}
-void AliPMD::MakeBranch(Option_t* option, const char *file)
+void AliPMD::MakeBranch(Option_t* option)
{
// Create Tree branches for the PMD
const char *cR = strstr(option,"R");
+ const char *cH = strstr(option,"H");
+ if (cH && fLoader->TreeH() && (fHits == 0x0))
+ fHits = new TClonesArray("AliPMDhit", 405);
- AliDetector::MakeBranch(option,file);
+ AliDetector::MakeBranch(option);
- if (cR) {
- printf("Make Branch - TreeR address %p\n",gAlice->TreeR());
+ if (cR && fLoader->TreeR()) {
+ printf("Make Branch - TreeR address %p\n",fLoader->TreeR());
const Int_t kBufferSize = 4000;
char branchname[30];
sprintf(branchname,"%sRecPoints",GetName());
- if (fRecPoints && gAlice->TreeR()) {
- MakeBranchInTree(gAlice->TreeR(),
- branchname, &fRecPoints, kBufferSize, file);
+ if (fRecPoints == 0x0) {
+ fRecPoints = new TClonesArray("AliPMDRecPoint",10000);
}
+ MakeBranchInTree(fLoader->TreeR(), branchname, &fRecPoints, kBufferSize,0);
}
}
{
// Set branch address for the TreeR
char branchname[30];
+
+ if (fLoader->TreeH() && fHits==0x0)
+ fHits = new TClonesArray("AliPMDhit", 405);
+
AliDetector::SetTreeAddress();
TBranch *branch;
- TTree *treeR = gAlice->TreeR();
+ TTree *treeR = fLoader->TreeR();
sprintf(branchname,"%s",GetName());
- if (treeR && fRecPoints) {
- branch = treeR->GetBranch(branchname);
- if (branch) branch->SetAddress(&fRecPoints);
+ if (treeR) {
+ branch = treeR->GetBranch(branchname);
+ if (branch)
+ {
+ if (fRecPoints == 0x0) {
+ fRecPoints = new TClonesArray("AliPMDRecPoint",10000);
+ }
+ branch->SetAddress(&fRecPoints);
+ }
}
}
// Add a PMD hit
//
Int_t i;
- for (i=0;i<5;i++) fVolume[i] = vol[i];
+ for (i=0;i<8;i++) fVolume[i] = vol[i];
fX=hits[0];
fY=hits[1];
fZ=hits[2];
fEnergy=hits[3];
}
+
+//____________________________________________________________________________
+void AliPMD::Hits2SDigits()
+{
+// create summable digits
+
+ AliRunLoader* runLoader = fLoader->GetRunLoader();
+ AliPMDDigitizer* pmdDigitizer = new AliPMDDigitizer;
+ pmdDigitizer->OpengAliceFile(fLoader->GetRunLoader()->GetFileName().Data(),
+ "HS");
+ pmdDigitizer->SetZPosition(365.0);
+
+ for (Int_t iEvent = 0; iEvent < runLoader->GetNumberOfEvents(); iEvent++) {
+ pmdDigitizer->Hits2SDigits(iEvent);
+ }
+ fLoader->UnloadHits();
+ fLoader->UnloadSDigits();
+ delete pmdDigitizer;
+}