/*
$Log$
+Revision 1.57 2002/05/07 17:23:11 kowal2
+Linear gain inefficiency instead of the step one at the wire edges.
+
Revision 1.56 2002/04/04 16:26:33 kowal2
Digits (Sdigits) go to separate files now.
#include <fstream.h>
#include "AliMC.h"
#include "AliMagF.h"
+#include "AliTrackReference.h"
#include "AliTPCParamSR.h"
fDefaults = 0;
fTrackHits = 0;
fTrackHitsOld = 0;
- fHitType = 4; //default CONTAINERS - based on ROOT structure
+ fHitType = 2; //default CONTAINERS - based on ROOT structure
fTPCParam = 0;
fNoiseTable = 0;
fActiveSectors =0;
fNoiseTable =0;
- fHitType = 4;
+ fHitType = 2;
fActiveSectors = 0;
//
// Initialise counters
if (fHitType>1)
AddHit2(track,vol,hits);
}
+
+void AliTPC::AddTrackReference(Int_t lab, TLorentzVector p, TLorentzVector x){
+ //
+ // add a trackrefernce to the list
+ if (!fTrackReferences) {
+ cerr<<"Container trackrefernce not active\n";
+ return;
+ }
+ Int_t nref = fTrackReferences->GetEntriesFast();
+ TClonesArray &lref = *fTrackReferences;
+ AliTrackReference * ref = new(lref[nref]) AliTrackReference;
+ ref->SetMomentum(p[0],p[1],p[2]);
+ ref->SetPosition(x[0],x[1],x[2]);
+ ref->SetTrack(lab);
+}
//_____________________________________________________________________________
void AliTPC::BuildGeometry()
Float_t detbz=currentIndex*(sumxz*sumx4-sumx2z*sumx3)-sumz*(sumx*sumx4-sumx2*sumx3)+
sumx2*(sumx*sumx2z-sumx2*sumxz);
+ if (TMath::Abs(det)<0.00001){
+ tpcHit = (AliTPChit*)NextHit();
+ continue;
+ }
+
Float_t y=detay/det+centralPad;
Float_t z=detaz/det;
Float_t by=detby/det; //y angle
#include "AliDetector.h"
#include "AliHit.h"
#include "AliDigit.h"
+#include "TLorentzVector.h"
+
class TMatrix;
AliTPC(const char *name, const char *title);
virtual ~AliTPC();
virtual void AddHit(Int_t a1, Int_t *a2, Float_t *a3);
+ virtual void AddTrackReference(Int_t lab, TLorentzVector p, TLorentzVector x);
Int_t DistancetoPrimitive(Int_t px, Int_t py);
virtual void BuildGeometry();
virtual void CreateGeometry() {}
virtual AliHit* NextHit();
virtual AliHit* FirstHit2(Int_t track);
virtual AliHit* NextHit2();
-
- Int_t GetHitType(){return fHitType;}
virtual void LoadPoints(Int_t dummy);
virtual void LoadPoints2(Int_t dummy);
virtual void LoadPoints3(Int_t dumy);
void GenerNoise(Int_t tablasize); // make noise table
Bool_t IsSectorActive(Int_t sec); // check if the sector is active
void SetActiveSectors(Int_t * sectors, Int_t n); //set active sectors
+ Int_t GetHitType(){return fHitType;}
void SetActiveSectors(Int_t flag=0); //loop over al hits and set active only hitted sectors
-
private:
//
Bool_t TrackInVolume(Int_t id,Int_t track); //return true if current track is in volume
/*
$Log$
+Revision 1.40 2002/01/21 17:12:00 kowal2
+New track hits structure using root containers
+
Revision 1.39 2001/05/16 14:57:25 alibrary
New files for folders and Stack
id = gMC->CurrentVolID(copy); // current volume Id
+ if (gMC->IsTrackEntering() && ( (id == fIdLSec) || (id == fIdUSec))){
+ // printf("track %d entering volume %d\n",gAlice->CurrentTrack(),id);
+ TLorentzVector p;
+ TLorentzVector x;
+ gMC->TrackMomentum(p);
+ gMC->TrackPosition(x);
+ AddTrackReference(gAlice->CurrentTrack(),p,x);
+ }
+
+ if (gMC->IsTrackExiting() && ( (id == fIdLSec) || (id == fIdUSec))){
+ // printf("track %d exiting volume %d\n",gAlice->CurrentTrack(),id);
+ TLorentzVector p;
+ TLorentzVector x;
+ gMC->TrackMomentum(p);
+ gMC->TrackPosition(x);
+ AddTrackReference(gAlice->CurrentTrack(),p,x);
+ }
+
+
if(id == fIdLSec){
vol[0] = copy-1; // lower sector number
}