// //
///////////////////////////////////////////////////////////////////////////////
+
#define DEBUG
#include <TMath.h>
#include <TGeometry.h>
#include <TLorentzVector.h>
#include "AliFMDv1.h"
#include "AliRun.h"
-#include "AliMC.h"
#include "AliDetector.h"
-#include <iostream.h>
-#include <fstream.h>
+#include <TBranch.h>
+#include <Riostream.h>
#include "AliMagF.h"
#include "AliFMDhit.h"
#include "AliFMDdigit.h"
#include "AliFMDReconstParticles.h"
#include <stdlib.h>
-
ClassImp (AliFMD)
//_____________________________________________________________________________
AliFMD::AliFMD ():AliDetector ()
fIshunt = 0;
fHits = 0;
fDigits = 0;
- fSDigits = 0;
fReconParticles=0;
}
fHits = new TClonesArray ("AliFMDhit", 1000);
// Digits for each Si disk
fDigits = new TClonesArray ("AliFMDdigit", 1000);
- fSDigits = new TClonesArray ("AliFMDdigit", 1000);
fReconParticles=new TClonesArray("AliFMDReconstParticles",1000);
gAlice->AddHitList (fHits);
fIdSens3 = 0;
fIdSens4 = 0;
fIdSens5 = 0;
- fMerger = 0;
+ // fMerger = 0;
SetMarkerColor (kRed);
}
delete fDigits;
fDigits = 0;
}
- if (fSDigits)
- {
- fSDigits->Delete ();
- delete fSDigits;
- fSDigits = 0;
- }
if (fReconParticles)
{
fReconParticles->Delete ();
TClonesArray & ldigits = *fDigits;
new (ldigits[fNdigits++]) AliFMDdigit (digits);
-}
-//_____________________________________________________________________________
-void AliFMD::AddSDigit (Int_t * digits)
-{
- // add a real digit - as coming from data
-
- TClonesArray & ldigits = *fSDigits;
- new (ldigits[fNdigits++]) AliFMDdigit (digits);
-
}
//_____________________________________________________________________________
void AliFMD::BuildGeometry ()
// FMD define the different volumes
new TRotMatrix ("rot901", "rot901", 90, 0, 90, 90, 180, 0);
- new TTUBE ("S_FMD0", "FMD volume 0", "void", 3.5, 16.8, 1.5);
+ new TTUBE ("S_FMD0", "FMD volume 0", "void", 4.2, 17.2, 1.5);
top->cd ();
node = new TNode ("FMD0", "FMD0", "S_FMD0", 0, 0, 62.8, "");
node->SetLineColor (kColorFMD);
fNodes->Add (node);
- new TTUBE ("S_FMD1", "FMD volume 1", "void", 22., 34.9, 1.5);
+ new TTUBE ("S_FMD1", "FMD volume 1", "void", 15.4, 28.4, 1.5);
top->cd ();
- node = new TNode ("FMD1", "FMD1", "S_FMD1", 0, 0, 75.1, "");
+ node = new TNode ("FMD1", "FMD1", "S_FMD1", 0, 0, 75.2, "");
node->SetLineColor (kColorFMD);
fNodes->Add (node);
- new TTUBE ("S_FMD2", "FMD volume 2", "void", 3.5, 16.8, 1.5);
+ new TTUBE ("S_FMD2", "FMD volume 2", "void", 4.2, 17.2, 1.5);
top->cd ();
- node = new TNode ("FMD2", "FMD2", "S_FMD2", 0, 0, -62.8, "");
+ node = new TNode ("FMD2", "FMD2", "S_FMD2", 0, 0, -83.2, "");
node->SetLineColor (kColorFMD);
fNodes->Add (node);
- new TTUBE ("S_FMD3", "FMD volume 3", "void", 22., 34.9, 1.5);
+ new TTUBE ("S_FMD3", "FMD volume 3", "void", 15.4, 28.4, 1.5);
top->cd ();
- node = new TNode ("FMD3", "FMD3", "S_FMD3", 0, 0, -75.1, "");
+ node = new TNode ("FMD3", "FMD3", "S_FMD3", 0, 0, -75.2, "");
node->SetLineColor (kColorFMD);
fNodes->Add (node);
- new TTUBE ("S_FMD4", "FMD volume 4", "void", 3.5, 16.8, 1.5);
+ new TTUBE ("S_FMD4", "FMD volume 4", "void", 4.2, 17.2, 1.5);
top->cd ();
// node = new TNode("FMD4","FMD4","S_FMD4",0,0,-270,"");
- node = new TNode ("FMD4", "FMD4", "S_FMD4", 0, 0, -345, "");
+ node = new TNode ("FMD4", "FMD4", "S_FMD4", 0, 0, -340, "");
node->SetLineColor (kColorFMD);
fNodes->Add (node);
}
}
//-------------------------------------------------------------------------
+
void AliFMD::Init ()
{
//
// Initialis the FMD after it has been built
Int_t i;
- AliMC *pMC = AliMC::GetMC ();
//
if (fDebug)
{
}
//
//
- fIdSens1 = pMC->VolId ("GRN1"); //Si sensetive volume
- fIdSens2 = pMC->VolId ("GRN2"); //Si sensetive volume
- fIdSens3 = pMC->VolId ("GRN3"); //Si sensetive volume
- fIdSens4 = pMC->VolId ("GRN4"); //Si sensetive volume
+ fIdSens1 = gMC->VolId ("GRN1"); //Si sensetive volume
+ fIdSens2 = gMC->VolId ("GRN2"); //Si sensetive volume
+ fIdSens3 = gMC->VolId ("GRN3"); //Si sensetive volume
+ fIdSens4 = gMC->VolId ("GRN4"); //Si sensetive volume
+ fIdSens5 = gMC->VolId ("GRN5"); //Si sensetive volume
}
+
//---------------------------------------------------------------------
void AliFMD::MakeBranch (Option_t * option, const char *file)
{
AliDetector::MakeBranch (option, file);
const char *cD = strstr(option,"D");
const char *cR = strstr(option,"R");
- const char *cS = strstr(option,"S");
- if (cS){
-
- MakeBranchInTree(gAlice->TreeS(),
- branchname,&fSDigits,
- kBufferSize, file);
- }
if (cD){
MakeBranchInTree(gAlice->TreeD(),
branchname,&fDigits,
kBufferSize, file);
+ cout<<" tree "<<gAlice->TreeD()<<" "<<branchname<<" "<<&fDigits<<endl;
}
if (cR){
MakeBranchInTree(gAlice->TreeR(),
}
}
- if (fSDigits)
- // fSDigits->Clear ();
-
- if (gAlice->TreeS () && fSDigits)
- {
- branch = gAlice->TreeS ()->GetBranch ("FMD");
- if (branch)
- branch->SetAddress (&fSDigits);
- }
+
if (gAlice->TreeR() && fReconParticles)
{
branch = gAlice->TreeR()->GetBranch("FMD");
}
//---------------------------------------------------------------------
+
void AliFMD::SetRingsSi1(Int_t ringsSi1)
{
- fRingsSi1=ringsSi1;
+ // fRingsSi1=ringsSi1;
+ fRingsSi1=768;
}
void AliFMD::SetSectorsSi1(Int_t sectorsSi1)
{
- fSectorsSi1=sectorsSi1;
+ fSectorsSi1=20;
}
void AliFMD::SetRingsSi2(Int_t ringsSi2)
{
- fRingsSi2=ringsSi2;
+ fRingsSi2=384;
}
void AliFMD::SetSectorsSi2(Int_t sectorsSi2)
{
- fSectorsSi2=sectorsSi2;
-}
-//---------------------------------------------------------------------
-
-void AliFMD::SDigits2Digits()
-{
- cout<<"AliFMD::SDigits2Digits"<<endl;
- if (!fMerger) {
- fMerger = new AliFMDMerger();
- }
- fMerger ->SetRingsSi1(fRingsSi1);
- fMerger->SetRingsSi2(fRingsSi2);
- fMerger ->SetSectorsSi1(fSectorsSi1);
- fMerger ->SetSectorsSi2(fSectorsSi2);
- fMerger->Init();
- cout<<"AliFMD::SDigits2Digits Init"<<endl;
- fMerger->Digitise();
- cout<<"AliFMD::SDigits2Digits Digitise() "<<endl;
-
-
-}
-//---------------------------------------------------------------------
-void AliFMD::SetMerger(AliFMDMerger* merger)
-{
-// Set pointer to merger
- fMerger = merger;
-}
-
-AliFMDMerger* AliFMD::Merger()
-{
-// Return pointer to merger
- return fMerger;
+ fSectorsSi2=40;
}
//---------------------------------------------------------------------
printf ("%s: eta %f radius %f\n", ClassName (), eta, rad);
}
-//---------------------------------------------------------------------
-
-void AliFMD::Hits2SDigits ()
-{
-
- //#ifdef DEBUG
- cout<<"ALiFMD::Hits2SDigits> start...\n";
- //#endif
-
- char * fileSDigits = 0 ;
- char * fileHeader = 0;
- AliFMDSDigitizer * sd = new AliFMDSDigitizer(fileHeader,fileSDigits) ;
- sd->SetRingsSi1(fRingsSi1);
- sd->SetRingsSi2(fRingsSi2);
- sd->SetSectorsSi1(fSectorsSi1);
- sd->SetSectorsSi2(fSectorsSi2);
-
-
- sd->Exec("") ;
- sd->Print("");
-
- delete sd ;
-
-}
//-----------------------------------------------------------------------
void AliFMD::Digits2Reco()
char * fileHeader=0;
AliFMDReconstruction * reconstruction =
new AliFMDReconstruction(fileHeader,fileReconParticles) ;
- // fReconParticles=new TClonesArray("AliFMDReconstParticles",1000);
reconstruction->Exec("");
delete reconstruction;
}
+//-----------------------------------------------------------------------
+
+void AliFMD::MakeBranchInTreeD(TTree *treeD, const char *file)
+{
+ //
+ // Create TreeD branches for the MUON.
+ //
+
+ const Int_t kBufferSize = 4000;
+ char branchname[20];
+
+ sprintf(branchname,"%s",GetName());
+ if(treeD){
+ MakeBranchInTree(treeD,
+ branchname,&fDigits,
+ kBufferSize, file);
+ }
+}