ROOT logo
#ifndef ALIEMCALSURVEY_H
#define ALIEMCALSURVEY_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id: $ */

#include <TObject.h>
#include <Rtypes.h>

class TClonesArray;
class TString;

class AliEMCALGeometry;

/*
  Objects of this class read txt file with survey data
  and convert the data into AliAlignObjParams of alignable EMCAL volumes.
  AliEMCALSurvey inherits TObject only to use AliLog "functions".
*/

class AliEMCALSurvey : public TObject {
public:

  enum SurveyDataType_t { kSurvey = 0, //use real survey parameters
			  kDummy = 1 //use dummy values for testing
  };

  AliEMCALSurvey();
  AliEMCALSurvey(const TString &txtFileName, const SurveyDataType_t dataType=kSurvey);

  virtual ~AliEMCALSurvey();

  //Create AliAlignObjParams for strips.
  void CreateAliAlignObjParams(TClonesArray &array);
  //Create AliAlignObjParams with null shifts and rotations.
  void CreateNullObjects(TClonesArray &alObj, const AliEMCALGeometry *geom)const;

  void  SetDataType(const SurveyDataType_t dataType) { fDataType = dataType; }
  Int_t GetDataType() const { return (Int_t)fDataType; }

protected:

  struct AliEMCALSuperModuleDelta {
    Float_t fXShift; //x shift
    Float_t fYShift; //y shift
    Float_t fZShift; //z shift
    Float_t fPsi;    //psi
    Float_t fTheta;  //theta
    Float_t fPhi;    //phi
  };

  Int_t 	  fNSuperModule; // Number of supermodules.
  AliEMCALSuperModuleDelta *fSuperModuleData; // Supermodule transformation data

  void InitSuperModuleData(const Double_t *xReal, const Double_t *yReal, const Double_t *zReal, 
			   const Double_t *psiReal, const Double_t *thetaReal, const Double_t *phiReal);
  void InitSuperModuleData(const TObjArray* surveypoints);

private:
  //Calculate shifts and rotations for supermodule.
  virtual AliEMCALSuperModuleDelta GetSuperModuleTransformation(Int_t smIndex) const;

  AliEMCALSurvey(const AliEMCALSurvey &);
  AliEMCALSurvey &operator = (const AliEMCALSurvey &);

  Int_t  fDataType; //! which date type (survey or dummy) to use

  ClassDef(AliEMCALSurvey, 2) //Survey data reader
};

#endif
 AliEMCALSurvey.h:1
 AliEMCALSurvey.h:2
 AliEMCALSurvey.h:3
 AliEMCALSurvey.h:4
 AliEMCALSurvey.h:5
 AliEMCALSurvey.h:6
 AliEMCALSurvey.h:7
 AliEMCALSurvey.h:8
 AliEMCALSurvey.h:9
 AliEMCALSurvey.h:10
 AliEMCALSurvey.h:11
 AliEMCALSurvey.h:12
 AliEMCALSurvey.h:13
 AliEMCALSurvey.h:14
 AliEMCALSurvey.h:15
 AliEMCALSurvey.h:16
 AliEMCALSurvey.h:17
 AliEMCALSurvey.h:18
 AliEMCALSurvey.h:19
 AliEMCALSurvey.h:20
 AliEMCALSurvey.h:21
 AliEMCALSurvey.h:22
 AliEMCALSurvey.h:23
 AliEMCALSurvey.h:24
 AliEMCALSurvey.h:25
 AliEMCALSurvey.h:26
 AliEMCALSurvey.h:27
 AliEMCALSurvey.h:28
 AliEMCALSurvey.h:29
 AliEMCALSurvey.h:30
 AliEMCALSurvey.h:31
 AliEMCALSurvey.h:32
 AliEMCALSurvey.h:33
 AliEMCALSurvey.h:34
 AliEMCALSurvey.h:35
 AliEMCALSurvey.h:36
 AliEMCALSurvey.h:37
 AliEMCALSurvey.h:38
 AliEMCALSurvey.h:39
 AliEMCALSurvey.h:40
 AliEMCALSurvey.h:41
 AliEMCALSurvey.h:42
 AliEMCALSurvey.h:43
 AliEMCALSurvey.h:44
 AliEMCALSurvey.h:45
 AliEMCALSurvey.h:46
 AliEMCALSurvey.h:47
 AliEMCALSurvey.h:48
 AliEMCALSurvey.h:49
 AliEMCALSurvey.h:50
 AliEMCALSurvey.h:51
 AliEMCALSurvey.h:52
 AliEMCALSurvey.h:53
 AliEMCALSurvey.h:54
 AliEMCALSurvey.h:55
 AliEMCALSurvey.h:56
 AliEMCALSurvey.h:57
 AliEMCALSurvey.h:58
 AliEMCALSurvey.h:59
 AliEMCALSurvey.h:60
 AliEMCALSurvey.h:61
 AliEMCALSurvey.h:62
 AliEMCALSurvey.h:63
 AliEMCALSurvey.h:64
 AliEMCALSurvey.h:65
 AliEMCALSurvey.h:66
 AliEMCALSurvey.h:67
 AliEMCALSurvey.h:68
 AliEMCALSurvey.h:69
 AliEMCALSurvey.h:70
 AliEMCALSurvey.h:71
 AliEMCALSurvey.h:72
 AliEMCALSurvey.h:73