- AliITSupgrade.h returns a version (same as v11Hybrid) to comply with the recent ITS code removal/cleaning
- Config.C uses by default the upgrade constructor which resembles the ITS (material budget / resolution)
# SHLIBS - Shared Libraries and objects for linking (Executables only) #
#--------------------------------------------------------------------------------#
-set ( SRCS UPGRADE/AliITSDigitUpgrade.cxx UPGRADE/AliITSsegmentationUpgrade.cxx)
+set ( SRCS UPGRADE/AliITSDigitUpgrade.cxx UPGRADE/AliITSsegmentationUpgrade.cxx UPGRADE/AliITSRecPointU.cxx)
string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
// ITS upgrade classes
#pragma link C++ class AliITSDigitUpgrade+;
#pragma link C++ class AliITSsegmentationUpgrade+;
+#pragma link C++ class AliITSRecPointU+;
#endif
--- /dev/null
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * *
+ * Author: The ALICE Off-line Project. *
+ * Contributors are mentioned in the code where appropriate. *
+ * *
+ * Permission to use, copy, modify and distribute this software and its *
+ * documentation strictly for non-commercial purposes is hereby granted *
+ * without fee, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission notice *
+ * appear in the supporting documentation. The authors make no claims *
+ * about the suitability of this software for any purpose. It is *
+ * provided "as is" without express or implied warranty. *
+ **************************************************************************/
+
+
+/////////////////////////////////////////////////////////////////////////////////
+// This class sets the local coordinates via a specific setter. Needed because //
+// the AliGeomManager class can not be used for the upgrade code at this stage //
+/////////////////////////////////////////////////////////////////////////////////
+
+#include <AliITSRecPointU.h>
+
+//_____________________________________________________________
+AliITSRecPointU::AliITSRecPointU():
+ AliITSRecPoint()
+{
+ //
+ // Default constructor
+ //
+}
+//_____________________________________________________________
+AliITSRecPointU::AliITSRecPointU(const AliITSRecPointU& pt):
+ AliITSRecPoint(pt)
+{
+ //
+ // Copy constructor
+ //
+}
+//______________________________________________________________________
+AliITSRecPointU& AliITSRecPointU::operator=(const AliITSRecPointU& source)
+{
+ //
+ // Assignment operator (as in AliITSRecPoint)
+ //
+
+ this->~AliITSRecPointU();
+ new(this) AliITSRecPointU(source);
+ return *this;
+
+}
--- /dev/null
+#ifndef ALIITSRECPOINTU_H
+#define ALIITSRECPOINTU_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+
+/////////////////////////////////////////////////////////////////
+// Class to set the local coordinates in ITS Upgrade recpoint //
+/////////////////////////////////////////////////////////////////
+
+#include <AliITSRecPoint.h>
+
+
+class AliITSRecPointU : public AliITSRecPoint {
+
+public :
+ AliITSRecPointU();
+ virtual ~AliITSRecPointU() {}; // distructor
+ AliITSRecPointU(const AliITSRecPointU& pt);
+ AliITSRecPointU& operator=(const AliITSRecPointU &source);
+
+ void SetLocalCoord(Float_t x, Float_t z) {fXloc=x; fZloc=z;}
+
+ ClassDef(AliITSRecPointU,1) // AliITSRecPointU class
+
+};
+#endif
#include "AliITSUpgradeClusterFinder.h"
#include "AliITSsegmentationUpgrade.h"
-#include "AliITSRecPoint.h"
+#include "AliITSRecPointU.h"
#include "AliITSDigitUpgrade.h"
#include "AliITSRawStreamSPD.h"
#include "AliLog.h"
//
fChargeArray = new TObjArray();
- fRecPoints = new TClonesArray("AliITSRecPoint",3000);
+ fChargeArray->SetOwner(kTRUE);
+ fRecPoints = new TClonesArray("AliITSRecPointU",3000);
fTmpLabel[0]=-5;
fTmpLabel[1]=-5;
fTmpLabel[2]=-5;
fNhitsLeft=0;
memset(fHits,0,999*999*sizeof(Bool_t));
+ fChargeArray->Clear();
}
//___________________________________________________________________________________
Int_t AliITSUpgradeClusterFinder::DoModuleClustering(Int_t Layer, UShort_t charge) {
// Creating the branch (see AliITSUpgradeReconstructor::Reconstruct)
//
- if(!fRecPoints)fRecPoints = new TClonesArray("AliITSRecPoint",1000);
+ if(!fRecPoints)fRecPoints = new TClonesArray("AliITSRecPointU",1000);
if (treeR) {
TBranch *branch = treeR->GetBranch("ITSRecPoints");
if (branch) return ;
// Addressing the branch (see AliITSUpgradeReconstructor::Reconstruct)
//
if(!treeR) return;
- if(!fRecPoints) fRecPoints = new TClonesArray("AliITSRecPoint",1000);
+ if(!fRecPoints) fRecPoints = new TClonesArray("AliITSRecPointU",1000);
TBranch *branch;
branch = treeR->GetBranch("ITSRecPoints");
// the clusterization is performed here
//
AliITSsegmentationUpgrade *segmentation = new AliITSsegmentationUpgrade();
- AliITSRecPoint recpnt;
+ AliITSRecPointU recpnt;
Int_t nClusters =0;
TClonesArray &lrecp = *fRecPoints;
xzl2[1] = zPixC2*(segmentation->GetCellSizeZ(ilayer))+0.5*(segmentation->GetCellSizeZ(ilayer))-(segmentation->GetHalfLength(ilayer));
check2 = segmentation->DetToGlobal(ilayer,xzl2[0], xzl2[1],xcheck2,ycheck2,zcheck2);
recpnt.SetType(GetClusterType(ilayer,nClu ));
- // recpnt.SetLocalCoord(xzl2[0],xzl2[1]); //temporary solution (no LocalToTrack Matrix)
+ recpnt.SetLocalCoord(xzl2[0],xzl2[1]); //temporary solution (no LocalToTrack Matrix)
//from global to tracking system coordinate
// global coordinate -> local coordinate getting alpha angle of the recpoint
Float_t xclg = xcheck2;//upgrade clusters global coordinate ( ITS official: GetX tracking coordinate)
segmentation->GetSegmentation(ilayer,xsize, zsize);
recpnt.SetSigmaY2(xsize/TMath::Sqrt(12)*xsize/TMath::Sqrt(12));
recpnt.SetSigmaZ2(zsize/TMath::Sqrt(12)*zsize/TMath::Sqrt(12));
- new(lrecp[nClusters++]) AliITSRecPoint(recpnt);
+ new(lrecp[nClusters++]) AliITSRecPointU(recpnt);
//Int_t idx = fRecPoints->GetEntries();
AliDebug(1,Form("recpoint : Nelectrons %f (entry %i)",recpnt.GetQ(),fRecPoints->GetEntries()));
}//cluster list entries
//--------------------------------------------------------------------
Int_t l=(index & 0xf0000000) >> 28;
Int_t c=(index & 0x0fffffff) >> 0;
- AliInfo(Form("index %i cluster index %i layer %i", index,c,l));
+ AliDebug(2,Form("index %i cluster index %i layer %i", index,c,l));
return fLayers[l]->GetCluster(c);
}
//______________________________________________________________________________
AliITSupgrade(const char *name, const char *title, Bool_t isBeamPipe=kTRUE); //ctor for standard ITS
AliITSupgrade(const char *name, const char *title, TArrayD widths, TArrayD radii,TArrayD halfLengths, TArrayD radiiCu, TArrayD widthsCu, TArrayS copper,Bool_t bp, Double_t radiusBP, Double_t widthPB, Double_t halfLengthsBP); //ctor
virtual ~AliITSupgrade(); //dtor
+ Int_t IsVersion() const {return 110;}// same as ITSv11Hybrid to comply with the AliITSInitGeom cases
+
//framework part+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AddAlignableVolumes() const; //from AliModule invoked from AliMC
if (iITS)
{
//=================== ITS parameters ============================
-
- Int_t nlayers =6;
- TArrayD xsize(nlayers);
- TArrayD zsize(nlayers);
- TArrayD spess(nlayers);
- TArrayD radii(nlayers);
-
- TArrayD spessCu(nlayers);
- TArrayD radiiCu(nlayers);
- TArrayS copper(nlayers);
- TArrayD halfLengths(nlayers);
-
- Bool_t bp=kFALSE;
- Double_t radiusBP = 2.9;
- Double_t widthBP = 0.08;
- Double_t halflengthBP = 80.;
-
- for(Int_t i=0; i<nlayers; i++){
- Double_t xsz[6]={31.18*1e-04,41.6*1e-04,131.6*1e-04,131.6*1e-04,69.3*1e-04,69.3*1e-04};
- Double_t zsz[6]={416*1e-04,416*1e-04,97*1e-04,97*1e-04,2875*1e-04,2875*1e-04};
- Double_t Lhalf[6]={80.,80.,80.,80.,80.,80.};
- Int_t npixHalf[6];
- npixHalf[i]=(Int_t)(Lhalf[i]/zsz[i]);
- Double_t HalfL[6];
- HalfL[i]=npixHalf[i]*zsz[i];
- Double_t r[6]={4.,7.6,14.9,23.8,39.1,43.6};
- radii.AddAt(r[i],i);
- Int_t npixR[6];
- npixR[i] = (Int_t)(2*TMath::Pi()*r[i]/xsz[i]);
- Double_t xszInt[6];
- xszInt[i]= 2*TMath::Pi()*r[i]/npixR[i];
- xsize.AddAt(xszInt[i],i);
- zsize.AddAt(zsz[i],i);
- Double_t thick[6]={75.*1e-04,150.*1e-04,150.*1e-04,150.*1e-04,150.*1e-04,150.*1e-04};
-
- radiiCu.AddAt(r[i]+thick[i],i);
- halfLengths.AddAt(HalfL[i],i);
- spess.AddAt(thick[i],i);
- spessCu.AddAt(0.015,i);//micron
- Int_t c[6]={1,1,1,1,1,1};
- copper.AddAt(c[i],i);
- }
- AliITSupgrade *ITS = new AliITSupgrade("ITS","ITS upgrade",spess,radii,halfLengths,radiiCu,spessCu,copper,bp,radiusBP, widthBP, halflengthBP );
-
- ITS->SetFullSegmentation(xsize,zsize);
+ Bool_t isUpgrade = kTRUE;
+ AliITS *ITS = 0x0;
+ if(isUpgrade) ITS = new AliITSupgrade("ITS","ITS Upgrade");
+ else ITS = new AliITSv11Hybrid("ITS","ITS v11Hybrid");
+
}