#include <TBRIK.h>
#include <TClonesArray.h>
-#include <TFile.h>
#include <TGeometry.h>
#include <TNode.h>
#include <TTree.h>
#include <TVirtualMC.h>
-#include "AliConst.h"
+#include "AliLog.h"
#include "AliLoader.h"
#include "AliPMDLoader.h"
#include "AliPMD.h"
-#include "AliPMDRecPoint.h"
#include "AliRun.h"
#include "AliMC.h"
#include "AliPMDDigitizer.h"
#include "AliPMDhit.h"
-#include "AliPMDClusterFinder.h"
-#include "AliPMDtracker.h"
-#include "AliESDPmdTrack.h"
-#include "AliESD.h"
+#include "AliPMDDDLRawData.h"
+#include "AliPMDRawToSDigits.h"
ClassImp(AliPMD)
//
fIshunt = 0;
- fRecPoints = 0;
-
}
//_____________________________________________________________________________
fHits = new TClonesArray("AliPMDhit", 405);
gAlice->GetMCApp()->AddHitList(fHits);
- fRecPoints = new TClonesArray("AliPMDRecPoint",10000);
- fNRecPoints = 0;
-
fIshunt = 0;
if (fLoader)
{
- cout<<"Success"<<endl;
+ AliDebug(100,"Success");
}
else
{
- cout<<"Failure"<<endl;
+ AliError("Failure");
}
return fLoader;
AliPMD::~AliPMD()
{
//
- // Default constructor
+ // Destructor
//
- delete fRecPoints;
- fNRecPoints=0;
}
//_____________________________________________________________________________
delete newcell;
}
-//_____________________________________________________________________________
-void AliPMD::BuildGeometry()
-{
- //
- // Build simple ROOT TNode geometry for event display
- //
-
- TNode *node, *top;
- const int kColorPMD = kRed;
-
- //
- top=gAlice->GetGeometry()->GetNode("alice");
-
- // PMD
- new TBRIK("S_PMD","PMD box","void",300,300,5);
- top->cd();
- node = new TNode("PMD","PMD","S_PMD",0,0,-600,"");
- node->SetLineColor(kColorPMD);
- fNodes->Add(node);
-}
-
-//_____________________________________________________________________________
-Int_t AliPMD::DistancetoPrimitive(Int_t , Int_t ) const
-{
- //
- // Distance from mouse to detector on the screen
- // dummy routine
- //
- return 9999;
-}
-
//_____________________________________________________________________________
void AliPMD::SetPAR(Float_t p1, Float_t p2, Float_t p3,Float_t p4)
{
//
}
-void AliPMD::AddRecPoint(const AliPMDRecPoint &p)
-{
- //
- // Add a PMD reconstructed hit to the list
- //
- TClonesArray &lrecpoints = *fRecPoints;
- new(lrecpoints[fNRecPoints++]) AliPMDRecPoint(p);
-}
-
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);
-
- 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 == 0x0) {
- fRecPoints = new TClonesArray("AliPMDRecPoint",10000);
- }
- MakeBranchInTree(fLoader->TreeR(), branchname, &fRecPoints, kBufferSize,0);
- }
}
void AliPMD::SetTreeAddress()
{
- // Set branch address for the TreeR
- char branchname[30];
-
+ // Set branch address
+
if (fLoader->TreeH() && fHits==0x0)
fHits = new TClonesArray("AliPMDhit", 405);
AliDetector::SetTreeAddress();
+}
- TBranch *branch;
- TTree *treeR = fLoader->TreeR();
-
- sprintf(branchname,"%s",GetName());
- if (treeR) {
- branch = treeR->GetBranch(branchname);
- if (branch)
- {
- if (fRecPoints == 0x0) {
- fRecPoints = new TClonesArray("AliPMDRecPoint",10000);
- }
- branch->SetAddress(&fRecPoints);
- }
- }
+void AliPMD::SetCpvOff()
+{
+ // Set the CPV plane off
}
+void AliPMD::SetPreOff()
+{
+ // Set the Preshower plane off
-void AliPMD::ResetHits()
+}
+void AliPMD::SetModuleOff(Int_t /*imodule*/)
{
- //
- // Reset number of hits and the hits array
- //
- AliDetector::ResetHits();
- fNRecPoints = 0;
- if (fRecPoints) fRecPoints->Clear();
+ // Set the desired module off
+
}
+
//____________________________________________________________________________
void AliPMD::Hits2SDigits()
{
fLoader->UnloadDigits();
delete pmdDigitizer;
-}
-//____________________________________________________________________________
-void AliPMD::Reconstruct() const
-{
-// create reconstructed points
-
- AliRunLoader* runLoader = fLoader->GetRunLoader();
- AliPMDClusterFinder *pmdClus = new AliPMDClusterFinder(runLoader);
- pmdClus->Load();
- for (Int_t iEvent = 0; iEvent < runLoader->GetNumberOfEvents(); iEvent++)
- {
- pmdClus->Digits2RecPoints(iEvent);
- }
- pmdClus->UnLoad("R");
- delete pmdClus;
-
}
-// ---------------------------------------------------------------------------
-void AliPMD::FillESD(AliESD* esd) const
-{
-
- fLoader->LoadRecPoints("READ");
- TTree *treeR = fLoader->TreeR();
- AliPMDtracker pmdtracker;
- pmdtracker.LoadClusters(treeR);
- pmdtracker.Clusters2Tracks(esd);
- fLoader->UnloadRecPoints();
-}
-
// ---------------------------------------------------------------------------
AliDigitizer* AliPMD::CreateDigitizer(AliRunDigitizer* manager) const
{
return new AliPMDDigitizer(manager);
}
// ---------------------------------------------------------------------------
+void AliPMD::Digits2Raw()
+{
+// convert digits of the current event to raw data
+ fLoader->LoadDigits();
+ TTree* digits = fLoader->TreeD();
+ if (!digits) {
+ AliError("No digits tree");
+ return;
+ }
+
+ AliPMDDDLRawData rawWriter;
+ rawWriter.WritePMDRawData(digits);
+
+ fLoader->UnloadDigits();
+}
+
+Bool_t AliPMD::Raw2SDigits(AliRawReader *rawReader)
+{
+ // converts raw to sdigits
+ AliRunLoader* runLoader = fLoader->GetRunLoader();
+ //runLoader->GetEvent(ievt);
+
+ AliPMDRawToSDigits pmdr2sd;
+ pmdr2sd.Raw2SDigits(runLoader, rawReader);
+ fLoader->UnloadSDigits();
+ return kTRUE;
+}