**************************************************************************/
/*
$Log$
+Revision 1.4 2000/12/21 22:14:38 morsch
+Clean-up of coding rule violations.
+
+Revision 1.3 2000/10/02 21:28:09 fca
+Removal of useless dependecies via forward declarations
+
+Revision 1.2 2000/06/15 07:58:49 morsch
+Code from MUON-dev joined
+
Revision 1.1.2.7 2000/06/09 22:06:29 morsch
Some coding rule violations corrected. Will soon be obsolete.
void type_of_call fit_trace(Float_t &, Float_t &, Float_t &, Float_t &, Float_t &, Float_t &, Int_t &, Int_t &, Int_t &, Int_t &);
}
-static TTree *pNtupleGlobal;
-static TFile *pHfileGlobal;
-static TTree *treeK1;
-static TTree *TrH1;
-static TClonesArray *fHits2; //List of hits for one track only
-static TClonesArray *fParticles2; //List of particles in the Kine tree
+static TTree *gAliNtupleGlobal;
+static TFile *gAliFileGlobal;
+static TTree *gAliTreeK1;
+static TTree *gAliTrH1;
+static TClonesArray *gAliHits2; //List of hits for one track only
+static TClonesArray *gAliParticles2; //List of particles in the Kine tree
// variables of the tracking ntuple
//___________________________________________________
AliMUONTrackReconstructor::AliMUONTrackReconstructor()
{
+// Constructor
+//
fSPxzCut = 3.0;
fSSigmaCut = 4.0;
fSXPrec = 0.01;
//_____________________________________________________________________________
void AliMUONTrackReconstructor::Reconst2(Int_t &ifit, Int_t &idebug, Int_t &nev)
{
+//
+//
reconstmuon2(ifit,idebug,nev);
}
//_____________________________________________________________________________
-void AliMUONTrackReconstructor::Reconst(Int_t &ifit, Int_t &idebug, Int_t bgd_ev, Int_t &nev, Int_t &idres, Int_t &ireadgeant, Option_t *option,Text_t *filename)
+void AliMUONTrackReconstructor::Reconst(Int_t &ifit, Int_t &idebug, Int_t bgdEvent, Int_t &nev, Int_t &idres, Int_t &ireadgeant, Option_t *option,Text_t *filename)
{
//
// open kine and hits tree of background file for reconstruction of geant hits
cout<<"filename "<<fFileName<<endl;
pFile=new TFile(fFileName);
cout<<"I have opened "<<fFileName<<" file "<<endl;
- fHits2 = new TClonesArray("AliMUONHit",1000);
- fParticles2 = new TClonesArray("TParticle",1000);
+ gAliHits2 = new TClonesArray("AliMUONHit",1000);
+ gAliParticles2 = new TClonesArray("TParticle",1000);
first=kFALSE;
}
pFile->cd();
- if(fHits2) fHits2->Clear();
- if(fParticles2) fParticles2->Clear();
- if(TrH1) delete TrH1;
- TrH1=0;
- if(treeK1) delete treeK1;
- treeK1=0;
+ if(gAliHits2) gAliHits2->Clear();
+ if(gAliParticles2) gAliParticles2->Clear();
+ if(gAliTrH1) delete gAliTrH1;
+ gAliTrH1=0;
+ if(gAliTreeK1) delete gAliTreeK1;
+ gAliTreeK1=0;
// Get Hits Tree header from file
char treeName[20];
- sprintf(treeName,"TreeH%d",bgd_ev);
- TrH1 = (TTree*)gDirectory->Get(treeName);
- // printf("TrH1 %p of treename %s for event %d \n",TrH1,treeName,bgd_ev);
- if (!TrH1) {
- printf("ERROR: cannot find Hits Tree for event:%d\n",bgd_ev);
+ sprintf(treeName,"TreeH%d",bgdEvent);
+ gAliTrH1 = (TTree*)gDirectory->Get(treeName);
+ // printf("gAliTrH1 %p of treename %s for event %d \n",gAliTrH1,treeName,bgdEvent);
+ if (!gAliTrH1) {
+ printf("ERROR: cannot find Hits Tree for event:%d\n",bgdEvent);
}
// set branch addresses
TBranch *branch;
char branchname[30];
AliMUON *pMUON = (AliMUON*) gAlice->GetModule("MUON");
sprintf(branchname,"%s",pMUON->GetName());
- if (TrH1 && fHits2) {
- branch = TrH1->GetBranch(branchname);
- if (branch) branch->SetAddress(&fHits2);
+ if (gAliTrH1 && gAliHits2) {
+ branch = gAliTrH1->GetBranch(branchname);
+ if (branch) branch->SetAddress(&gAliHits2);
}
- TrH1->GetEntries();
+ gAliTrH1->GetEntries();
// get the Kine tree
- sprintf(treeName,"TreeK%d",bgd_ev);
- treeK1 = (TTree*)gDirectory->Get(treeName);
- if (!treeK1) {
- printf("ERROR: cannot find Kine Tree for event:%d\n",bgd_ev);
+ sprintf(treeName,"TreeK%d",bgdEvent);
+ gAliTreeK1 = (TTree*)gDirectory->Get(treeName);
+ if (!gAliTreeK1) {
+ printf("ERROR: cannot find Kine Tree for event:%d\n",bgdEvent);
}
// set branch addresses
- if (treeK1)
- treeK1->SetBranchAddress("Particles", &fParticles2);
- treeK1->GetEvent(0);
+ if (gAliTreeK1)
+ gAliTreeK1->SetBranchAddress("Particles", &gAliParticles2);
+ gAliTreeK1->GetEvent(0);
// get back to the first file
TTree *treeK = gAlice->TreeK();
//__________________________________________
void AliMUONTrackReconstructor::FinishEvent()
{
- TTree *treeK = gAlice->TreeK();
- TFile *file1 = 0;
- if (treeK) file1 = treeK->GetCurrentFile();
- file1->cd();
+ // Finish
+ // TTree *treeK = gAlice->TreeK();
+ // TFile *file1 = 0;
+ // if (treeK) file1 = treeK->GetCurrentFile();
+ // file1->cd();
}
//_____________________________________
// Create an output file ("reconst.root")
// Create some histograms and an ntuple
- pHfileGlobal = new TFile("reconst.root","RECREATE","Ntuple - reconstruction");
-
- pNtupleGlobal = new TTree("ntuple","Reconst ntuple");
- pNtupleGlobal->Branch("ievr",&NtupleSt.ievr,"ievr/I");
- pNtupleGlobal->Branch("ntrackr",&NtupleSt.ntrackr,"ntrackr/I");
- pNtupleGlobal->Branch("istatr",&NtupleSt.istatr[0],"istatr[500]/I");
- pNtupleGlobal->Branch("isignr",&NtupleSt.isignr[0],"isignr[500]/I");
- pNtupleGlobal->Branch("pxr",&NtupleSt.pxr[0],"pxr[500]/F");
- pNtupleGlobal->Branch("pyr",&NtupleSt.pyr[0],"pyr[500]/F");
- pNtupleGlobal->Branch("pzr",&NtupleSt.pzr[0],"pzr[500]/F");
- pNtupleGlobal->Branch("zvr",&NtupleSt.zvr[0],"zvr[500]/F");
- pNtupleGlobal->Branch("chi2r",&NtupleSt.chi2r[0],"chi2r[500]/F");
- pNtupleGlobal->Branch("pxv",&NtupleSt.pxv[0],"pxv[500]/F");
- pNtupleGlobal->Branch("pyv",&NtupleSt.pyv[0],"pyv[500]/F");
- pNtupleGlobal->Branch("pzv",&NtupleSt.pzv[0],"pzv[500]/F");
+ gAliFileGlobal = new TFile("reconst.root","RECREATE","Ntuple - reconstruction");
+
+ gAliNtupleGlobal = new TTree("ntuple","Reconst ntuple");
+ gAliNtupleGlobal->Branch("ievr",&NtupleSt.ievr,"ievr/I");
+ gAliNtupleGlobal->Branch("ntrackr",&NtupleSt.ntrackr,"ntrackr/I");
+ gAliNtupleGlobal->Branch("istatr",&NtupleSt.istatr[0],"istatr[500]/I");
+ gAliNtupleGlobal->Branch("isignr",&NtupleSt.isignr[0],"isignr[500]/I");
+ gAliNtupleGlobal->Branch("pxr",&NtupleSt.pxr[0],"pxr[500]/F");
+ gAliNtupleGlobal->Branch("pyr",&NtupleSt.pyr[0],"pyr[500]/F");
+ gAliNtupleGlobal->Branch("pzr",&NtupleSt.pzr[0],"pzr[500]/F");
+ gAliNtupleGlobal->Branch("zvr",&NtupleSt.zvr[0],"zvr[500]/F");
+ gAliNtupleGlobal->Branch("chi2r",&NtupleSt.chi2r[0],"chi2r[500]/F");
+ gAliNtupleGlobal->Branch("pxv",&NtupleSt.pxv[0],"pxv[500]/F");
+ gAliNtupleGlobal->Branch("pyv",&NtupleSt.pyv[0],"pyv[500]/F");
+ gAliNtupleGlobal->Branch("pzv",&NtupleSt.pzv[0],"pzv[500]/F");
// test aliroot
NtupleSt.pyv[i] = pyv[i];
NtupleSt.pzv[i] = pzv[i];
}
- pNtupleGlobal->Fill();
+ gAliNtupleGlobal->Fill();
}
//________________
{
//
// write histos and ntuple to "reconst.root" file
- pHfileGlobal->Write();
+ gAliFileGlobal->Write();
}
//________________________________________________________________________
mHit=(AliMUONHit*)pMUON->NextHit())
{
if (mHit->fChamber > 10) continue;
- TClonesArray *fPartArray = gAlice->Particles();
- Int_t ftrack = mHit->fTrack;
- Int_t id = ((TParticle*) fPartArray->UncheckedAt(ftrack))->GetPdgCode();
+ Int_t ftrack = mHit->Track();
+ Int_t id = gAlice->Particle(ftrack)->GetPdgCode();
if (id==kMuonPlus||id==kMuonMinus) {
- xgeant[nhittot1] = mHit->fY;
- ygeant[nhittot1] = mHit->fX;
+ xgeant[nhittot1] = mHit->Y();
+ ygeant[nhittot1] = mHit->X();
izch[nhittot1] = mHit->fChamber;
// printf("id %d ch %d x %f y %f\n",id,izch[nhittot1],xgeant[nhittot1],ygeant[nhittot1]);
nhittot1++;
} // track loop
ievr=nev;
- pHfileGlobal->cd();
+ gAliFileGlobal->cd();
}
//______________________________________________________________________________
if (maxidg<=20000) {
if (mHit->fChamber > 10) continue;
- TClonesArray *fPartArray = gAlice->Particles();
TParticle *particle;
- Int_t ftrack = mHit->fTrack;
- Int_t id = ((TParticle*) fPartArray->UncheckedAt(ftrack))->GetPdgCode();
+ Int_t ftrack = mHit->Track();
+ Int_t id = gAlice->Particle(ftrack)->GetPdgCode();
// if (id==kMuonPlus||id==kMuonMinus) {
// inversion de x et y car le champ est inverse dans le programme tracking
xtrg[maxidg] = 0;
ytrg[maxidg] = 0;
- xgeant[maxidg] = mHit->fY; // x-pos of hit
- ygeant[maxidg] = mHit->fX; // y-pos of hit
+ xgeant[maxidg] = mHit->Y(); // x-pos of hit
+ ygeant[maxidg] = mHit->X(); // y-pos of hit
clsize1[maxidg] = 0; // cluster size on 1-st cathode
clsize2[maxidg] = 0; // cluster size on 2-nd cathode
cx[maxidg] = mHit->fCyHit; // Px/P of hit
ptotg[maxidg] = mHit->fPTot; // P of hit
- particle = (TParticle*) fPartArray->UncheckedAt(ftrack);
+ particle = gAlice->Particle(ftrack);
Float_t thet = particle->Theta();
thet = thet*180./3.1416;
if (iparent >= 0) {
Int_t ip;
while(1) {
- ip=((TParticle*) fPartArray->UncheckedAt(iparent))->GetFirstMother();
+ ip=gAlice->Particle(iparent)->GetFirstMother();
if (ip < 0) {
break;
} else {
//printf("iparent - %d\n",iparent);
Int_t id1 = ftrack; // numero de la particule generee au vertex
Int_t idum = track+1;
- Int_t id2 = ((TParticle*) fPartArray->UncheckedAt(iparent))->GetPdgCode();
+ Int_t id2 = gAlice->Particle(iparent)->GetPdgCode();
if (id2==443) id2=114;
else id2=116;
// } // if pMUON
} // track loop first file
- if (TrH1 && fHits2 ) { // if background file
- ntracks =(Int_t)TrH1->GetEntries();
+ if (gAliTrH1 && gAliHits2 ) { // if background file
+ ntracks =(Int_t)gAliTrH1->GetEntries();
printf("Trackf_read - 2-nd file - ntracks %d\n",ntracks);
// Loop over tracks
for (Int_t track=0; track<ntracks; track++) {
- if (fHits2) fHits2->Clear();
- TrH1->GetEvent(track);
+ if (gAliHits2) gAliHits2->Clear();
+ gAliTrH1->GetEvent(track);
// Loop over hits
AliMUONHit *mHit;
- for (int i=0;i<fHits2->GetEntriesFast();i++)
+ for (int i=0;i<gAliHits2->GetEntriesFast();i++)
{
- mHit=(AliMUONHit*) (*fHits2)[i];
+ mHit=(AliMUONHit*) (*gAliHits2)[i];
if (mHit->fChamber > 10) continue;
if (maxidg<=20000) {
// inversion de x et y car le champ est inverse dans le programme tracking !!!!
xtrg[maxidg] = 0; // only for reconstructed point
ytrg[maxidg] = 0; // only for reconstructed point
- xgeant[maxidg] = mHit->fY; // x-pos of hit
- ygeant[maxidg] = mHit->fX; // y-pos of hit
+ xgeant[maxidg] = mHit->Y(); // x-pos of hit
+ ygeant[maxidg] = mHit->X(); // y-pos of hit
clsize1[maxidg] = 0; // cluster size on 1-st cathode
clsize2[maxidg] = 0; // cluster size on 2-nd cathode
cx[maxidg] = mHit->fCyHit; // Px/P of hit
izch[maxidg] = mHit->fChamber; // chamber number
ptotg[maxidg] = mHit->fPTot; // P of hit
- Int_t ftrack = mHit->fTrack;
+ Int_t ftrack = mHit->Track();
Int_t id1 = ftrack; // track number
Int_t idum = track+1;
- TClonesArray *fPartArray = fParticles2;
+ TClonesArray *fPartArray = gAliParticles2;
// TParticle *Part=NULL;
Int_t id = ((TParticle*) fPartArray->UncheckedAt(ftrack))->GetPdgCode();
if (id==kMuonPlus||id==kMuonMinus) {
} // check limits (maxidg)
} // hit loop
} // track loop
- } // if TrH1
+ } // if gAliTrH1
ievr = nev;
nhittot1 = maxidg ;
if (nres>=19) nbres++;
printf("nres, nbres %d %d \n",nres,nbres);
- pHfileGlobal->cd();
+ gAliFileGlobal->cd();
}
itypg[mpoi]=0;
ihit = ihit-1;
if (ihit >=0 && itrack >=0) {
- TClonesArray *fPartArray = gAlice->Particles();
gAlice->ResetHits();
gAlice->TreeH()->GetEvent(itrack);
TClonesArray *pMUONhits = pMUON->Hits();
AliMUONHit* mHit;
mHit=(AliMUONHit*) (pMUONhits->UncheckedAt(ihit));
Int_t id = (Int_t) mHit->fParticle;
- xgeant[mpoi] = mHit->fY;
- ygeant[mpoi] = mHit->fX;
+ xgeant[mpoi] = mHit->Y();
+ ygeant[mpoi] = mHit->X();
if (id == kMuonPlus) itypg[mpoi]=5;
if (id == kMuonMinus) itypg[mpoi]=6;
TParticle *particle;
- particle = (TParticle*)
- (fPartArray->UncheckedAt(mHit->fTrack));
- TParticle* particleM=(TParticle*)
- (fPartArray->UncheckedAt(particle->GetFirstMother()));
+ particle = gAlice->Particle(mHit->Track());
+ TParticle* particleM=gAlice->Particle(particle->GetFirstMother());
Int_t iparent=particleM->GetPdgCode();
printf("\n Particle Id:%d %d \n", id, iparent);
if (iparent == 443) id2=114;
treeR->Reset();
- pHfileGlobal->cd();
+ gAliFileGlobal->cd();
} // if pMUON
}