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//---------------------------------------------------------------------------
10class EdbScanSet : public TNamed
11{
12 public:
15 TObjArray ePC;
16 TList eIDS;
17
20
21 public:
23 EdbScanSet(int brickid=0);
24 virtual ~EdbScanSet(){}
25
26 void Copy(EdbScanSet &sc);
27
28 void MakePIDList();
29 void MakeNominalSet(EdbID id, int from_plate=57, int to_plate=1,
30 float z0=0, float dz=-1300, float shr=1, float dzbase=210., float dzem=45. );
31 void Print();
32 Int_t AssembleBrickFromPC();
34 Int_t TransformBrick(EdbAffine2D aff);
36 Int_t ShiftBrickZ(Float_t z);
37 Int_t MakeParFiles(Int_t piece=0, const char *dir=".");
38 Int_t ReadIDS(const char *file);
39 Int_t WriteIDS(const char *file=0);
40 Bool_t AddID(EdbID *id, Int_t step);
41 Bool_t SetAsReferencePlate(Int_t pid);
42 Bool_t GetAffP2P(Int_t p1, Int_t p2, EdbAffine2D &aff);
43 Float_t GetDZP2P(Int_t p1, Int_t p2);
44 EdbID *FindNextPlateID(Int_t p, Bool_t direction);
45 EdbID *FindPlateID(Int_t p);
46 EdbID *GetID(Int_t i) {return (EdbID *)(eIDS.At(i));}
47 void SetID(EdbID id) {eID=id;}
48
49 const EdbBrickP& Brick() const {return eB;}
50 EdbBrickP& Brick() {return eB;}
51
52 bool ValidSide(int side) const { if(side>-1&&side<3) return 1; return 0;}
53 EdbLayer *GetLayer(Int_t p, Int_t side) { if(GetPlate(p)) if(ValidSide(side)) return GetPlate(p)->GetLayer(side); return 0; }
54 float Zlayer(int plate, int side) { if(GetLayer(plate,side)) return GetLayer(plate,side)->Z() + GetPlate(plate)->Z(); else return 0; }
55
57 if (ePID.Find(p))
58 return eB.GetPlate(ePID.Find(p)->At(0)->Value());
59 else return 0;
60 }
61
62 void UpdateBrickWithP2P(EdbLayer &la, int plate1, int plate2);
63 void RemovePlate(int pid);
64 void UpdateGap(float dz, int pid1, int pid2);
65
66 void WriteGeom(const char *fname);
67 void ReadGeom( const char *fname);
68 void UpdateIDS(int brick, int ma, int mi);
69
70 ClassDef(EdbScanSet,2) //
71};
72
73#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:38
EdbPlateP * GetPlate(int i)
Definition: EdbBrick.h:53
Definition: EdbID.h:7
Definition: EdbLayer.h:39
float Z() const
Definition: EdbLayer.h:77
Definition: EdbBrick.h:14
EdbLayer * GetLayer(int i)
Definition: EdbBrick.h:29
Definition: EdbScanSet.h:11
void MakePIDList()
Definition: EdbScanSet.cxx:178
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:52
Int_t AssembleBrickFromPC()
Definition: EdbScanSet.cxx:130
EdbID * GetID(Int_t i)
Definition: EdbScanSet.h:46
void Copy(EdbScanSet &sc)
Definition: EdbScanSet.cxx:51
Bool_t SetAsReferencePlate(Int_t pid)
Definition: EdbScanSet.cxx:191
virtual ~EdbScanSet()
Definition: EdbScanSet.h:24
Int_t TransformSidesIntoBrickRS()
Definition: EdbScanSet.cxx:205
Int_t MakeParFiles(Int_t piece=0, const char *dir=".")
Definition: EdbScanSet.cxx:107
TIndexCell ePID
correspondance between index in eB and the plate id
Definition: EdbScanSet.h:14
void SetID(EdbID id)
Definition: EdbScanSet.h:47
const EdbBrickP & Brick() const
Definition: EdbScanSet.h:49
Int_t ReadIDS(const char *file)
Definition: EdbScanSet.cxx:347
EdbPlateP * GetPlate(Int_t p)
Definition: EdbScanSet.h:56
Bool_t GetAffP2P(Int_t p1, Int_t p2, EdbAffine2D &aff)
Definition: EdbScanSet.cxx:247
EdbBrickP eB
all layers of the brick defined here
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:476
EdbLayer * GetLayer(Int_t p, Int_t side)
Definition: EdbScanSet.h:53
EdbID eID
id of the scanset itself
Definition: EdbScanSet.h:19
TList eIDS
list of the identifiers to be processed
Definition: EdbScanSet.h:16
EdbID * FindPlateID(Int_t p)
Definition: EdbScanSet.cxx:465
Int_t eReferencePlate
Definition: EdbScanSet.h:18
void Print()
Definition: EdbScanSet.cxx:315
void UpdateGap(float dz, int pid1, int pid2)
Definition: EdbScanSet.cxx:508
float Zlayer(int plate, int side)
Definition: EdbScanSet.h:54
EdbBrickP & Brick()
Definition: EdbScanSet.h:50
Int_t ShiftBrickZ(Float_t z)
Definition: EdbScanSet.cxx:239
void WriteGeom(const char *fname)
Definition: EdbScanSet.cxx:420
void RemovePlate(int pid)
Definition: EdbScanSet.cxx:494
void UpdateIDS(int brick, int ma, int mi)
Definition: EdbScanSet.cxx:37
TObjArray ePC
Plate Couples. Each couple represented as EdbPlateP where 2 sides in reality corresponds to 2 plates.
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:440
void ReadGeom(const char *fname)
Definition: EdbScanSet.cxx:380
Int_t WriteIDS(const char *file=0)
Definition: EdbScanSet.cxx:364
EdbScanSet(EdbID id)
Int_t TransformBrick(EdbAffine2D aff)
Definition: EdbScanSet.cxx:216
sort collection with attributes
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
int pid[1000]
Definition: m2track.cpp:13
ss
Definition: energy.C:62
TFile * file
Definition: write_pvr.C:3
const char * fname
Definition: mc2raw.cxx:41
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1
UInt_t id
Definition: tlg2couples.C:117
p
Definition: testBGReduction_AllMethods.C:8