00001 #ifndef XANADisplay_h 00002 #define XANADisplay_h 00003 00009 #include <stdlib.h> 00010 #include <TCanvas.h> 00011 00012 class TGeoManager; 00013 class TGeoVolume; 00014 class TObjArray; 00015 class TRefArray; 00016 class TString; 00017 class TPolyMarker; 00018 class TTree; 00019 class XANAPad; 00020 class XANAEsdEvent; 00021 class XANAEcalGeometry; 00022 class XANACluster; 00023 class TH2F; 00024 class TFile; 00025 00026 class XANADisplay : public TCanvas { 00027 public : 00028 static XANADisplay *Instance(Int_t wid); 00029 static XANADisplay *Instance(); 00030 ~XANADisplay(); 00031 00032 00033 void redrawGeom(); 00034 void DrawECAL3D(); 00035 void drawAll(); 00036 void showACluster(XANACluster *clus,Int_t clusnr); 00037 XANAPad *GetPad() { return fPad;} 00038 void saveAs(const char *); 00039 00040 00041 //setter 00042 void setCutC(Double_t cut) {enCutClus_=cut;} 00043 void setCutT(Double_t cut) {enCutTrak_=cut;} 00044 void SetBothView(Bool_t state) {fBothV=state;} 00045 void SetRadialView(Bool_t state) {fRadial = state;} 00046 void SetSideView(Bool_t state) {fSide =state;} 00047 void setHit(Bool_t flag) {drawHit_ = flag;} 00048 void setHitStereo(Bool_t flag) {noSmooth_ = flag;} 00049 void setTrack(Bool_t flag) {drawTrack_ = flag;} 00050 void setTrackHit(Bool_t flag) {drawTrackHit_ = flag;} 00051 void setClus(Bool_t flag) {drawClus_ = flag;} 00052 void setEcal(Bool_t flag) {ecalDet_ = flag;} 00053 void setElec(Bool_t flag) {drawElec_ = flag;} 00054 void setCaloRecHit(Bool_t flag) {drawCaloHit_ = flag;} 00055 void setRunNb(Int_t run) {runNb_=run;} 00056 void setEventNb(Int_t evt); 00057 void setPrintMode(Bool_t flag) {transparency_=flag;} 00058 00059 00060 //getter 00061 XANAEcalGeometry *getEcalGeom() {return ecalGeom_;} 00062 TObjArray *getElecTrackArr() {return elecTrackArray_;} 00063 void getEvent(); 00064 Int_t getEventNb() {return eventNb_;} 00065 Int_t getRunNb() {return runNb_;} 00066 Double_t getCutC() {return enCutClus_;} 00067 Double_t getCutT() {return enCutTrak_;} 00068 void getShortFileName(); 00069 00070 //Get next event from tree 00071 void Next(); 00072 //get previous event from tree 00073 void Previous(); 00074 00075 // file 00076 void openFile(); 00077 //filename from menu 00078 void selectFile(); 00079 // filename from command line 00080 void selectFile(TString *fname); 00081 00082 00083 private : 00084 XANADisplay(){;} 00085 XANADisplay(const char *name,Int_t w,Int_t h,Int_t winid); 00086 00087 static XANADisplay *fInstance; 00088 00089 // file ,tree,event 00090 TTree *cmsTree_; 00091 XANAEsdEvent *event_; 00092 XANAEcalGeometry *ecalGeom_; 00093 Int_t eventNb_; 00094 Int_t runNb_; 00095 Int_t currentEvent_; 00096 Int_t previousEvent_; 00097 Int_t maxEntries_; 00098 TObjArray *trackArray_; 00099 TObjArray *clusterArray_; 00100 TObjArray *elecTrackArray_; 00101 TObjArray *hitArray_; 00102 00103 TFile *cmsFile_; 00104 char *fileName_; 00105 char *shortFileName_; 00106 00107 00108 // Canvas,view 00109 XANAPad *fPad; 00110 TGeoManager *fGeom; 00111 TGeoVolume *fTop; 00112 Double_t autoResize(); 00113 void convertBlack(TPad *pad); 00114 TCanvas *clusterView_; 00115 00116 // flags indicating drawing choices 00117 Bool_t fRadial; 00118 Bool_t fSide; 00119 Bool_t fBothV; 00120 Bool_t drawHit_; 00121 Bool_t drawTrackHit_; 00122 Bool_t drawTrack_; 00123 Bool_t drawClus_; 00124 Bool_t drawCaloHit_; 00125 Bool_t drawElec_; 00126 Bool_t ecalDet_; 00127 Double_t enCutClus_; 00128 Double_t enCutTrak_; 00129 00132 Bool_t noSmooth_; 00133 Bool_t redrawDet_; 00134 00135 // Max size of graphic containers 00136 Int_t maxTrack_; 00137 Int_t maxClus_; 00138 Int_t maxElec_; 00139 Bool_t transparency_; 00140 00141 // containers of graphic objects 00142 TObjArray *graphicRTracks_; 00143 TObjArray *graphicSTracks_; 00145 TObjArray *graphicRElecTracks_; 00146 TObjArray *graphicSElecTracks_; 00148 TObjArray *graphicRHits_; 00149 TObjArray *graphicSHits_; 00151 TPolyMarker *pms_; 00152 TPolyMarker *pmr_; 00153 00154 TObjArray *graphicSClus_; 00155 TObjArray *graphicRClus_; 00156 00157 TObjArray *ecalSDetector_; 00158 TObjArray *ecalRDetector_; 00159 TH2F *histoEnd1Hit_; 00160 TH2F *histoEnd2Hit_; 00161 TH2F *maskEndCap_; 00162 TH2F *histoCaloHit_; 00163 TH2F *clusHisto_; 00164 00165 void BuildSimpleGeometry(); 00166 void buildEcalR(Double_t *rmax,Double_t rmin,UInt_t col); 00167 void buildEcalS(Double_t *x,Double_t *y,UInt_t col); 00168 void createHistos(); 00169 void loadClus(); 00170 void loadElectronHits(); 00171 void loadAllTrackHits(); 00172 void loadTrackHits(); 00173 void loadCaloHits(); 00174 void resetGraphicObjects(); 00175 00176 ClassDef(XANADisplay,0) // Display graphic objects 00177 }; 00178 #endif