FEDRA emulsion software from the OPERA Collaboration
EdbScanSet.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbScanSet
2 #define ROOT_EdbScanSet
3 
4 #include "TList.h"
5 #include "TIndexCell.h"
6 #include "EdbBrick.h"
7 #include "EdbID.h"
8 
9 //---------------------------------------------------------------------------
10 class EdbScanSet : public TNamed
11 {
12  public:
13  EdbBrickP eB; // all layers of the brick defined here
14  TIndexCell ePID; // correspondance between index in eB and the plate id
15  TObjArray ePC; // Plate Couples. Each couple represented as EdbPlateP
16  // where 2 sides in reality corresponds to 2 plates
17  TList eIDS; // list of the identifiers to be processed
18 
20  EdbID eID; // id of the scanset itself
21 
22  public:
24  EdbScanSet(int brickid=0);
25  virtual ~EdbScanSet(){}
26 
27  void Copy(EdbScanSet &sc);
28 
29  void MakePIDList();
30  void MakeNominalSet(EdbID id, int from_plate=57, int to_plate=1,
31  float z0=0, float dz=-1300, float shr=1, float dzbase=210., float dzem=45. );
32  void Print();
33  Int_t AssembleBrickFromPC();
35  Int_t TransformBrick(EdbAffine2D aff);
37  Int_t ShiftBrickZ(Float_t z);
38  Int_t MakeParFiles(Int_t piece=0, const char *dir=".");
39  Int_t ReadIDS(const char *file);
40  Int_t WriteIDS(const char *file=0);
41  Bool_t AddID(EdbID *id, Int_t step);
42  Bool_t SetAsReferencePlate(Int_t pid);
43  Bool_t GetAffP2P(Int_t p1, Int_t p2, EdbAffine2D &aff);
44  Float_t GetDZP2P(Int_t p1, Int_t p2);
45  EdbID *FindNextPlateID(Int_t p, Bool_t direction);
46  EdbID *FindPlateID(Int_t p);
47  EdbID *GetID(Int_t i) {return (EdbID *)(eIDS.At(i));}
48  void SetID(EdbID id) {eID=id;}
49 
50  const EdbBrickP& Brick() const {return eB;}
51  EdbBrickP& Brick() {return eB;}
52 
53  bool ValidSide(int side) const { if(side>-1&&side<3) return 1; return 0;}
54  EdbLayer *GetLayer(Int_t p, Int_t side) { if(GetPlate(p)) if(ValidSide(side)) return GetPlate(p)->GetLayer(side); return 0; }
55  float Zlayer(int plate, int side) { if(GetLayer(plate,side)) return GetLayer(plate,side)->Z() + GetPlate(plate)->Z(); else return 0; }
56 
57  EdbPlateP *GetPlate(Int_t p) {
58  if (ePID.Find(p))
59  return eB.GetPlate(ePID.Find(p)->At(0)->Value());
60  else return 0;
61  }
62 
63  int GetPlateIDNearestToZ(float z, int dir=0);
64  void UpdateBrickWithP2P(EdbLayer &la, int plate1, int plate2);
65  void RemovePlate(int pid);
66  void UpdateGap(float dz, int pid1, int pid2);
67 
68  void WriteGeom(const char *fname);
69  void ReadGeom( const char *fname);
70  void UpdateIDS(int brick, int ma, int mi);
71 
72  ClassDef(EdbScanSet,2) //
73 };
74 
75 #endif /* ROOT_EdbScanSet */
brick z0
Definition: RecDispMC.C:106
brick dz
Definition: RecDispMC.C:107
BRICK brick
Definition: RecDispMC.C:103
Definition: EdbAffine.h:17
Definition: EdbBrick.h:37
EdbPlateP * GetPlate(int i)
Definition: EdbBrick.h:52
Definition: EdbID.h:7
Definition: EdbLayer.h:40
float Z() const
Definition: EdbLayer.h:78
Definition: EdbBrick.h:13
EdbLayer * GetLayer(int i)
Definition: EdbBrick.h:28
Definition: EdbScanSet.h:11
void MakePIDList()
Definition: EdbScanSet.cxx:178
EdbBrickP & Brick()
Definition: EdbScanSet.h:51
void MakeNominalSet(EdbID id, int from_plate=57, int to_plate=1, float z0=0, float dz=-1300, float shr=1, float dzbase=210., float dzem=45.)
Definition: EdbScanSet.cxx:74
bool ValidSide(int side) const
Definition: EdbScanSet.h:53
EdbLayer * GetLayer(Int_t p, Int_t side)
Definition: EdbScanSet.h:54
Int_t AssembleBrickFromPC()
Definition: EdbScanSet.cxx:130
void Copy(EdbScanSet &sc)
Definition: EdbScanSet.cxx:51
Bool_t SetAsReferencePlate(Int_t pid)
Definition: EdbScanSet.cxx:191
int GetPlateIDNearestToZ(float z, int dir=0)
Definition: EdbScanSet.cxx:315
virtual ~EdbScanSet()
Definition: EdbScanSet.h:25
Int_t TransformSidesIntoBrickRS()
Definition: EdbScanSet.cxx:205
Int_t MakeParFiles(Int_t piece=0, const char *dir=".")
Definition: EdbScanSet.cxx:107
EdbPlateP * GetPlate(Int_t p)
Definition: EdbScanSet.h:57
TIndexCell ePID
Definition: EdbScanSet.h:14
void SetID(EdbID id)
Definition: EdbScanSet.h:48
Int_t ReadIDS(const char *file)
Definition: EdbScanSet.cxx:364
Bool_t GetAffP2P(Int_t p1, Int_t p2, EdbAffine2D &aff)
Definition: EdbScanSet.cxx:247
EdbBrickP eB
Definition: EdbScanSet.h:13
Float_t GetDZP2P(Int_t p1, Int_t p2)
Definition: EdbScanSet.cxx:263
Bool_t AddID(EdbID *id, Int_t step)
Definition: EdbScanSet.cxx:493
EdbID eID
Definition: EdbScanSet.h:20
TList eIDS
Definition: EdbScanSet.h:17
EdbID * FindPlateID(Int_t p)
Definition: EdbScanSet.cxx:482
Int_t eReferencePlate
Definition: EdbScanSet.h:19
void Print()
Definition: EdbScanSet.cxx:332
EdbID * GetID(Int_t i)
Definition: EdbScanSet.h:47
void UpdateGap(float dz, int pid1, int pid2)
Definition: EdbScanSet.cxx:525
float Zlayer(int plate, int side)
Definition: EdbScanSet.h:55
Int_t ShiftBrickZ(Float_t z)
Definition: EdbScanSet.cxx:239
void WriteGeom(const char *fname)
Definition: EdbScanSet.cxx:437
void RemovePlate(int pid)
Definition: EdbScanSet.cxx:511
const EdbBrickP & Brick() const
Definition: EdbScanSet.h:50
void UpdateIDS(int brick, int ma, int mi)
Definition: EdbScanSet.cxx:37
TObjArray ePC
Definition: EdbScanSet.h:15
void UpdateBrickWithP2P(EdbLayer &la, int plate1, int plate2)
Definition: EdbScanSet.cxx:275
EdbID * FindNextPlateID(Int_t p, Bool_t direction)
Definition: EdbScanSet.cxx:457
void ReadGeom(const char *fname)
Definition: EdbScanSet.cxx:397
Int_t WriteIDS(const char *file=0)
Definition: EdbScanSet.cxx:381
EdbScanSet(EdbID id)
Int_t TransformBrick(EdbAffine2D aff)
Definition: EdbScanSet.cxx:216
Definition: TIndexCell.h:19
Long_t Value() const
Definition: TIndexCell.h:79
TIndexCell const * At(Int_t narg, Int_t vind[]) const
Definition: TIndexCell.cpp:519
TIndexCell * Find(Int_t narg, Long_t varg[]) const
Definition: TIndexCell.cpp:613
ss
Definition: energy.C:62
int pid[1000]
Definition: m2track.cpp:13
const char * fname
Definition: mc2raw.cxx:41
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1
UInt_t id
Definition: tlg2pattern.C:118
p
Definition: testBGReduction_AllMethods.C:8
TFile * file
Definition: write_pvr.C:3